- (UIImage *)captureFullScrollViewContent:(UIScrollView *)scrollView {
// 确保scrollView的布局是最新的
[scrollView setNeedsLayout];
[scrollView layoutIfNeeded];
// 获取屏幕的scale(适用于Retina显示)
CGFloat scale = [UIScreen mainScreen].scale;
// 保存scrollView的原始状态
CGPoint originalContentOffset = scrollView.contentOffset;
// 获取scrollView的内容大小
CGSize contentSize = scrollView.contentSize;
// 创建与contentSize相同的图片上下文,scale确保图片与屏幕分辨率匹配
UIGraphicsBeginImageContextWithOptions(contentSize, NO, scale);
// 设置x和y的初始偏移量
CGFloat offsetY = 0;
// 按内容高度逐段截取
while (offsetY < contentSize.height) {
// 设置当前偏移量(从顶部开始)
scrollView.contentOffset = CGPointMake(0, offsetY);
// 渲染当前显示的内容到上下文
[scrollView.layer renderInContext:UIGraphicsGetCurrentContext()];
// 移动y偏移,处理下一段
offsetY += scrollView.bounds.size.height;
}
// 获取最终的图片
UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// 恢复scrollView的原始状态
scrollView.contentOffset = originalContentOffset;
return capturedImage;
}
OC截长图
于 2024-10-23 11:50:25 首次发布