最近做项目遇到要求截取图片长度超出手机屏幕,即可滑动的长图截屏,这里简单说一下解决思路:
当我们要截全屏时,将滑动视图的frame以及偏移量记录下来,然后将滑动视图偏移量设为0,frame改为滑动视图的
contentSize,然后生成图片进行保存,代码实现如下:
// 下面方法,第一个参数表示区域大小。第二个参数表示是否是非透明的。如果需要显示半透明效果,需要传NO,否则传YES。第三个参数就是屏幕密度了,调整清晰度。
UIGraphicsBeginImageContextWithOptions(scroll.contentSize, YES, [UIScreen mainScreen].scale); CGPoint savedContentOffset = scroll.contentOffset;
CGRect savedFrame = scroll.frame;
scroll.contentOffset = CGPointZero;
scroll.frame = CGRectMake(0, 0, scroll.contentSize.width, scroll.contentSize.height);
[scroll.layer renderInContext: UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
scroll.contentOffset = savedContentOffset;
scroll.frame = savedFrame; UIGraphicsEndImageContext();