截取整个ScrollerView视图

来源:互联网 发布:org.apache.cxf maven 编辑:程序博客网 时间:2024/06/04 18:17

因项目的需要,需要截取整个ScrollerView视图,开始搜索找到如下的相关解决方式:
转载自:http://www.cnblogs.com/willbin/p/3745067.html

- (UIImage *)captureScrollView{      UIImage* image = nil;      UIGraphicsBeginImageContext(scrollView.contentSize);      {          CGPoint savedContentOffset = scrollView.contentOffset;          CGRect savedFrame = scrollView.frame;          scrollView.contentOffset = CGPointZero;          scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);          [scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];          image = UIGraphicsGetImageFromCurrentImageContext();          scrollView.contentOffset = savedContentOffset;          scrollView.frame = savedFrame;      }      UIGraphicsEndImageContext();      if (image != nil) {          return image;      }      return nil;  }  

经过测试使用,貌似解决了,但是,在iOS9之前的系统,直接崩溃了,。。。。。。。。伤,,,,
错误指向:

Assertion failed: (CGFloatIsValid(x) && CGFloatIsValid(y)),function void CGPathMoveToPoint(CGMutablePathRef, const CGAffineTransform *, CGFloat, CGFloat),file Paths/CGPath.cc, line 254.

错误示例代码:

UIImage* image = nil;CGSize imageSize = CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height);UIGraphicsBeginImageContextWithOptions(imageSize, NO , 0.0f);[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; // <- ERROR image = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();

解决代码:

#pragma mark - 截取屏幕的图片- (UIImage *)captureScrollView:(UIScrollView *)scrollView{    UIImage* image = nil;    CGSize sizes=scrollView.contentSize;    sizes.width=sizes.width;    sizes.height=sizes.height-20;    UIGraphicsBeginImageContextWithOptions(sizes, NO, 0);    {        CGPoint savedContentOffset = scrollView.contentOffset;        CGRect savedFrame = scrollView.frame;        scrollView.contentOffset = CGPointZero;        scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);        [scrollView drawViewHierarchyInRect:scrollView.bounds afterScreenUpdates:YES];        image = UIGraphicsGetImageFromCurrentImageContext();        scrollView.contentOffset = savedContentOffset;        scrollView.frame = savedFrame;    }    UIGraphicsEndImageContext();    if (image != nil) {        return image;    }    return nil;}
0 0
原创粉丝点击