美文网首页
关于renderInContext造成的crash问题

关于renderInContext造成的crash问题

作者: sfandy | 来源:发表于2017-02-15 16:46 被阅读475次

    关于renderInContext造成的crash问题,在ios8上crash概率还是比较大的,目前以下方式没什么问题,已通过性能测试,无多大影响。
    afterScreenUpdates参数为YES时,如果有首次进入界面,默认有下拉刷新时,会造成类似卡帧的效果。
    afterScreenUpdates为NO有弹窗时,侧滑返回有部分空白,可能截屏还没完成就已经返回了。

    故建议做版本限制,只能避免iOS8大面积的crash,根本上还是没有解决,其它系统仍然有概率crash。

    - (UIImage *)capture {
      if (CGRectIsEmpty(TOP_VIEW.frame)) {
          return nil;
      }
      //renderInContext该方法为渲染view.layer,此方法容易造成内存暴涨。
      UIGraphicsBeginImageContextWithOptions(view.bounds.size,view.opaque, 0.0);
      // [view.layer renderInContext:UIGraphicsGetCurrentContext()];
      if ([view respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)]) {
          BOOL isComplate = [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];
      }else{
          [view.layer renderInContext:UIGraphicsGetCurrentContext()];
      }
      UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
      UIGraphicsEndImageContext();
      return img;
    }

    相关文章

      网友评论

          本文标题:关于renderInContext造成的crash问题

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