OC(十九):获取截图通知以及分享截图

今天无聊在京东上 逛,想买个机械键盘,看来看去不知道哪个好,就截图微信发给同学请教一下款式如何,索性准备截图微信发给他,当我在京东客户端截完图,自动弹出分享面板,忽然被震到了,这个需求这是很贴心,我们一般截图都是为了用 IM 工具发出去,这样就省了好多步骤,很贴心🈶木🈶.今天就研究了一下,闲言不多说 , 写完博客, 还要看<<人民的名义>>,你懂得😉!

截图后弹出分享窗口

coreCode如下,我把它放在了 AppDelegate 中

//构建截图通知  UIApplicationUserDidTakeScreenshotNotification
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenShoot:) name:UIApplicationUserDidTakeScreenshotNotification object:nil];

- (void)screenShoot:(NSNotification * )noti{

    [SVProgressHUD showSuccessWithStatus:@"截图成功"];
    [UtilsFunctions showShareActionSheet:[UIApplication sharedApplication].keyWindow image:[self createScreenShootImage] urlString:nil];
}

获取截图的图片

/**
 获得截屏的图片

 @return 生成的图片
 */
- (UIImage *)createScreenShootImage{

    //设置 size
    UIGraphicsBeginImageContextWithOptions((CGSize){WIDTHOFSCREEN, HEIGHTOFSCREEN}, YES, [UIScreen mainScreen].scale) ;
    //获得句柄
    CGContextRef ref = UIGraphicsGetCurrentContext();
    
    UIWindow * window = [UIApplication sharedApplication].delegate.window;
    
    //渲染到 context中
    [window.layer renderInContext:ref];
    
    //获得想要的图片
    UIImage * createdImage = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return createdImage;
}

特别注意:

这里使用的是UIGraphicsBeginImageContextWithOptions而不是UIGraphicsBeginImageContext,原因是 防止获取的截图的图片模糊,关键参数:UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale)中的 scale.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • UIGraphicsBeginImageContext 创建一个基于位图的上下文(context),并将其设置为当...
    李前途阅读 3,258评论 1 4
  • UIGraphicsBeginImageContext创建一个基于位图的上下文(context),并将其设置为当前...
    宋进锋阅读 3,638评论 1 2
  • 先看效果 1 什么时候会用到这个? 分享,目前笔者能想到的只有分享,因为要用呀😁。 2 为什么要写这个? UIWe...
    iceMaple阅读 4,069评论 3 10
  • 华灯初上,夜,微微有些冷。又是一个暖冬,没有雪的冬天还是冬天,只是少了浪漫。就如没有你的人生也叫做人生,只是多了些...
    爱灵曦阅读 428评论 0 0
  • 感恩昨天的奔波,收获很多 感恩同事们都愿意配合工作 感恩钱宝宝不断来到我身边,支持我做很多事 感恩鲍总支持,愿意使...
    我不叫许仲斌阅读 230评论 0 1