IOS截圖分享,狀態列擋住了UIView處理
阿新 • • 發佈:2019-01-06
至於截圖分享這個功能,我也不知是哪個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 :
就是正常情況下的死樣子