至于截图分享这个功能,我也不知是哪个APP始作俑者,这个13装的犀利。。。。
原理简单的说下:iOS 7.0之后加入了一个系统通知
UIApplicationUserDidTakeScreenshotNotification 截屏触发的通知
也就是
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(userDidTakeScreenshot:)
name:UIApplicationUserDidTakeScreenshotNotification object:nil];-(void)userDidTakeScreenshot:(id)sender{
}在这里就不解释了。。。
我要说的重点是截屏分享是每个界面都有可能发生了,可能发生在任何界面
如果把截屏视图放在 UIView 上那么比较尴尬,看下摩拜单车的,我觉得大部分产品都是一直在模仿从未被超越。。。
想都不用想,肯定要去程序猿做的跟膜拜单车一样。。。。。
那么UIView就需要加载UIwindow上了 。。
我们现在来获取UIWindow
- (UIWindow *)mainWindow
{
UIApplication *app = [UIApplication sharedApplication];
if ([app.delegate respondsToSelector:@selector(window)])
{
return [app.delegate window];
}
else
{
return [app keyWindow];
}
}当UIWindow获取之后,或许你在想大功告成了。。。 BUT
蛋疼的事情总是有的 。。。 当你在往UIWindow上加入View时
不用我说了,肯定不行的 。。。 至少要像下图。。。
也就是状态栏上面的字是不要出现的。。
其实 UIWindow 有个windowLevel 属性
UIWindow *window = [self mainWindow];
windows.windowLevel = UIWindowLevelAlert;
UIWindowLevelAlert :UIView会遮住状态栏的字
UIWindowLevelNormal :
就是正常情况下的死样子
本文介绍了iOS中实现截屏分享功能的方法,重点讲解如何利用UIApplicationUserDidTakeScreenshotNotification进行截屏检测,并解决了UIWindow层级及状态栏显示等问题。
4047

被折叠的 条评论
为什么被折叠?



