iOS开发攻城狮的集散地系统方法解读iOS开发

iOS 获取系统截屏事件

2018-01-03  本文已影响744人  小海豚丶

最近看某某App在截屏之后弹出一个分享提示框,感觉挺有意思,于是乎想自己做一下,查阅了一番资料发现So easy,就是监听一个系统通知然后根据需求做处理罢了;下面给出相关代码:

效果.png
1.系统通知名称
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;
}

方法很多,看你想怎么写了吧,这里只提供了一种简单点的;

喜欢的话给个赞,土豪的话随意打赏;

上一篇下一篇

猜你喜欢

热点阅读