IOS截图分享,状态栏挡住了UIView处理

至于截图分享这个功能,我也不知是哪个APP始作俑者,这个13装的犀利。。。。

原理简单的说下:iOS 7.0之后加入了一个系统通知 

UIApplicationUserDidTakeScreenshotNotification 截屏触发的通知

也就是 

   [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(userDidTakeScreenshot:)
                                                 name:UIApplicationUserDidTakeScreenshotNotification object:nil];

-(void)userDidTakeScreenshot:(id)sender{
}

在这里就不解释了。。。 

我要说的重点是截屏分享是每个界面都有可能发生了,可能发生在任何界面

如果把截屏视图放在 UIView 上那么比较尴尬,看下摩拜单车的,我觉得大部分产品都是一直在模仿从未被超越。。。

IOS截图分享,状态栏挡住了UIView处理_第1张图片

想都不用想,肯定要去程序猿做的跟膜拜单车一样。。。。。

那么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时

IOS截图分享,状态栏挡住了UIView处理_第2张图片

不用我说了,肯定不行的 。。。  至少要像下图。。。

IOS截图分享,状态栏挡住了UIView处理_第3张图片


也就是状态栏上面的字是不要出现的。。   


其实 UIWindow 有个windowLevel 属性

UIWindow *window = [self mainWindow];

windows.windowLevel = UIWindowLevelAlert;


UIWindowLevelAlert :UIView会遮住状态栏的字

UIWindowLevelNormal : 就是正常情况下的死样子

 







 


你可能感兴趣的:(IOS)