美文网首页BUGDevSupportiOS老中医
关于iOS屏幕截图的坑

关于iOS屏幕截图的坑

作者: 木鱼钟 | 来源:发表于2016-01-26 14:50 被阅读5412次

最近在处理一个屏幕截图的crash的时候,遇到一些问题,看了很多关于屏幕截图的方法,这里结合crash说下屏幕截图。

看了很多截屏的方法,如下两个最为简单明了:

  1. 使用系统自带的snapshotViewAfterScreenUpdates:方法,参数为YES,代表视图的属性改变渲染完毕后截屏,参数为NO代表立刻将当前状态的视图截图
    UIView *showView         = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
    UISwitch *sw = [UISwitch new];
    [showView addSubview:sw];
    showView.backgroundColor = [UIColor redColor]; 
    [self.view addSubview:showView];
    
    UIView *snap1 = [showView snapshotViewAfterScreenUpdates:YES];
    self.snapView = snap1;
    snap1.center  = self.view.center;
    [self.view addSubview:snap1];

效果图:


Snip20160126_2.png

2、得到截图的图片
特别说明:renderInContext:方法在iOS8上会偶尔崩溃,这也是我遇到的问题,当时换了各种手段和方案,最后使用drawViewHierarchyInRect:afterScreenUpdates:才解决掉这个Crash,希望大家若是遇到了同样的坑的话能够帮上一点小忙

 UIGraphicsBeginImageContextWithOptions(TOP_VIEW.frame.size, NO, [[UIScreen mainScreen] scale]);
//     [TOP_VIEW.layer renderInContext:UIGraphicsGetCurrentContext()]; // 此方法,除却iOS8以外其他系统都OK
        [TOP_VIEW drawViewHierarchyInRect:TOP_VIEW.bounds afterScreenUpdates:NO];
        UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return snapshot;

相关文章

  • 关于iOS屏幕截图的坑

    最近在处理一个屏幕截图的crash的时候,遇到一些问题,看了很多关于屏幕截图的方法,这里结合crash说下屏幕截图...

  • iOS 屏幕截图

    附:我的博客地址

  • iOS屏幕截图

    截图固定位置并保存到系统相册

  • ios屏幕截图

  • iOS 截图屏幕

    OC版本 swift版本

  • 在截图时将UIView转化为PDF输出(截长图)

    为自己的App适配iOS 13 截图API,当用户屏幕截图时,由App来提供该屏幕截图的PDF版本(如下图所示) ...

  • 2019-03-22

    iOS 屏幕快照(view 截图/快照) layer 快照 view 快照

  • iOS 屏幕截屏(视频)

    关于iOS屏幕截图的,网络上有好多,但好多都表示如果播放视频截图的话,截的是黑的。 刚好目前有这需求,然后就各种搜...

  • iOS屏幕截图功能

    iOS7.0之前的系统,可以通过以下代码实现截屏功能。 iOS7.0之后,系统中封装了截屏的方法- (UIView...

  • IOS屏幕截图的记录

    虽然网上有很多不同的方法,但我还是写出来我自己写的一套,哈哈~这段代码前前后后,写了一个多月,修修改改.中间测试的...

网友评论

  • 2751492841d9:但是使用视频的view还是没法通过renderInContext 或方法 drawViewHierarchyInRect 转成image,你的能截取视频吗?
    机智的昵称:@ggngwwp 这个貌似连续截屏就会崩溃,内存飙升,不知道如何解决
    2751492841d9:@哥只是个菜鸟 我的不是崩,而是截取的视频画面是黑色的,最后还是用drawViewHierarchyInRect 这个方法截取了更上一层的view截取到的
    哥只是个菜鸟:遇到同样的问题,直播录屏时会崩溃,大神解决了没?
  • 2751492841d9:刚好遇到这个截图问题,太感谢了

本文标题:关于iOS屏幕截图的坑

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