iOS 获取系统截屏事件
2018-01-03 本文已影响744人
小海豚丶
最近看某某App在截屏之后弹出一个分享提示框,感觉挺有意思,于是乎想自己做一下,查阅了一番资料发现So easy,就是监听一个系统通知然后根据需求做处理罢了;下面给出相关代码:
效果.png1.系统通知名称
UIApplicationUserDidTakeScreenshotNotification
以下是系统给出的说明
// This notification is posted after the user takes a screenshot (for example by pressing both the home and lock screen buttons)
UIKIT_EXTERN NSNotificationName const UIApplicationUserDidTakeScreenshotNotification NS_AVAILABLE_IOS(7_0);
2.注册监听对象
你可以写在想要的页面控制器或者直接放在AppDelegate中,
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(userDidTakeScreenshot:)
name:UIApplicationUserDidTakeScreenshotNotification
object:nil];
处理方法:
#pragma mark - 用户截屏通知事件
- (void)userDidTakeScreenshot:(NSNotification *)notification {
NSLog(@"检测到截屏");
// 手动截取当前屏幕图片
UIImage *mainScreenshot = [[UIApplication sharedApplication].keyWindow yg_screenshot];
/*
自定义处理方法的代码,随意吧
*/
}
以上我用了一个 UIView 的 类做的手动截屏来获取图片,免去了再去获取系统相册图片的麻烦;分类代码如下:
3.获取截屏图片UIImage对象
- (UIImage *)yg_screenshot {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [UIScreen mainScreen].scale);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *imageData = UIImageJPEGRepresentation(image, 0.5);//数值 0 - 1 之间
image = [UIImage imageWithData:imageData];
return image;
}
方法很多,看你想怎么写了吧,这里只提供了一种简单点的;
喜欢的话给个赞,土豪的话随意打赏;