/// 根据一个View生成一个image
+ (UIImage *)imageFromSnapShotView:(UIView *)view {
UIImage *image = nil;
if ([view.class isSubclassOfClass:[UIScrollView class]]) {
UIScrollView *scroolView = (UIScrollView *)view;
CGPoint tempContentOffset = scroolView.contentOffset;
CGRect tempFrame = scroolView.frame;
scroolView.contentOffset = CGPointZero;
scroolView.frame = CGRectMake(0, 0, scroolView.contentSize.width, scroolView.contentSize.height);
image = [UIImage screenshotForView:scroolView size:scroolView.frame.size];
scroolView.contentOffset = tempContentOffset;
scroolView.frame = tempFrame;
} else {
image = [UIImage screenshotForView:view size:view.frame.size];
}
// return image;
return [UIImage imageWithData:UIImageJPEGRepresentation(image, 1.0f) scale:0.2];
}
+ (UIImage *)screenshotForView:(UIView *)view size:(CGSize)size {
UIImage *image = nil;
UIGraphicsBeginImageContextWithOptions(size, YES, [UIScreen mainScreen].scale);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
该博客介绍了如何在iOS开发中处理超出屏幕的截屏情况。通过提供一个方法,将ScrollView的内容完整截取为UIImage,包括滚动到屏幕外的部分。方法中首先保存ScrollView的contentOffset和frame,然后调整其大小以适应全部内容,进行截图,最后恢复原始状态。

1万+

被折叠的 条评论
为什么被折叠?



