美文网首页iOS开发经验iOSiOS学习
iOS应用内截屏并分享(大致思路)

iOS应用内截屏并分享(大致思路)

作者: ZYiDa | 来源:发表于2017-06-02 15:51 被阅读1193次

京东和微博都有类似的功能:使用系统截屏功能时会弹出截图分享界面。
其实这个功能思路很简单。
第一步:注册监听截屏功能的通知,UIApplicationUserDidTakeScreenshotNotification,如下,

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

第二部,每次当我们截屏时self就会监听到截屏通知,并调用对应的方法做出操作。

#pragma mark 用户使用了系统截屏操作
- (void)didUseScreenShot
{
    NSLog(@"用户使用了截屏操作");
    if (isUseScreenShots == NO)
    {
        dispatch_async(dispatch_get_main_queue(), ^{
            ShareView *shareView = [[ShareView alloc]initWithImage:[self getImage]];
            [shareView show];
            isUseScreenShots = YES;
            [shareView didSelectedUseScreenShotsWithBlock:^{
                isUseScreenShots = NO;
            }];
        });
    }
}

#pragma mark 截取当前屏幕,并生成image对象
-(UIImage *)getImage
{
    UIGraphicsBeginImageContext([UIScreen mainScreen].bounds.size);
    [[UIApplication sharedApplication].windows[0].layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

说明:

1.ShareView是我自定义的弹窗界面
2.isUseScreenShots用来判断是否已经使用截屏功能并弹出分享界面,如果已经弹出分享界面,则多次截屏时不再弹出。(这个也可以放到单例模式中也就行处理,总之就是保持弹窗的唯一性).如下代码

+ (instancetype)shareInstanceWithImage:(UIImage *)image
{
    static ShareView *shareInstance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        shareInstance = [[ShareView alloc]initWithImage:image];
    });
    return shareInstance;
}
#pragma mark 用户使用了系统截屏操作
- (void)didUseScreenShot
{
    NSLog(@"用户使用了截屏操作");
    dispatch_async(dispatch_get_main_queue(), ^{
        [[ShareView shareInstanceWithImage:[self getImage]] show];
    });

}

大致的界面效果如下:

IMG_0669.png

相关文章

  • iOS应用内截屏并分享(大致思路)

    京东和微博都有类似的功能:使用系统截屏功能时会弹出截图分享界面。其实这个功能思路很简单。第一步:注册监听截屏功能的...

  • iOS 应用内截屏分享

    需求:捕获用户截屏操作,并建议用户截屏后的操作。虽然iOS11 有系统的截屏,但 APP 内截屏可便捷操作。 封装...

  • RN 中截屏react-native-view-shot

    应用场景: 对应用中的某一个界面进行截屏并保存(Android 和 IOS) (特殊情况是对该截屏进行图片拼接,本...

  • 针对WKWebView进行内容的截屏。

    最近项目中需要截屏分享的功能,之前也了解过iOS截屏的技术,并写了关于截屏的笔记,兴冲冲的拿着代码稍作修改,对WK...

  • 应用内截屏

    记录项目中遇到的新鲜的未接触过的方法。 前几天遇到一个需要在分享图片(应用内截图)的需求,原先并不知道还可以用代码...

  • ios:instrument调试中发现VM:CGRaster D

    最近项目中有截屏分享的需求,截取整个uitableview的contentview,然后分享。 截屏的思路是分段截...

  • iOS开发——监听系统截屏并获得截图

    iOS开发——监听系统截屏并获得截图 项目需要得到获得截屏然后生成自己的分享图,某度能找到的基本都是怎么获取Vie...

  • iOS 如何获取截屏图片并且展示出来呢?

    现在很多iOS应用涉及到活动什么的分享什么的用到把当前截屏图片放置页面的对应位置,所以今天九聊一聊如何将截屏...

  • flutter:截屏

    1.flutter-截屏组件 2.flutter-截屏插件 3.flutter-iOS原生截屏 iOS代码 4.获...

  • (最新)iOS截屏

    ios webview 截屏:ios截屏 前言:介绍一下截屏有很多种做法1:截当前屏幕内容2:截整个视图的所有内容...

网友评论

    本文标题:iOS应用内截屏并分享(大致思路)

    本文链接:https://www.haomeiwen.com/subject/xsjufxtx.html