关于iOS屏幕截图的坑

来源:互联网 发布:c语言和指针 编辑:程序博客网 时间:2024/06/07 11:22
                         作者 木鱼钟 关注
        2016.01.26 14:50* 字数 299 阅读 1882评论 4

最近在处理一个屏幕截图的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;


原创粉丝点击