如何将页面生成一张长图
2023-06-09 10:01阅读:
1. 全屏截图
+ (UIImage *)snapshotScreen {
UIWindow *window = [UIApplication
sharedApplication].keyWindow;
UIGraphicsBeginImageContextWithOptions(window.bounds.size,
NO, [UIScreen mainScreen].scale);
[window.layer
renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image =
UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
2. view生成图片
+ (UIImage *)snapshotWithView:(UIView *)view {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO,
[UIScreen mainScreen].scale);
[view.layer
renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image =
UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
3. scrollView生成长图
+ (UIImage *)snapshotWithScrollView:(
UIScrollView *)scrollView {
CGPoint savedContentOffset =
scrollView.contentOffset;
CGRect savedFrame = scrollView.frame;
scrollView.contentOffset = CGPointZero;
scrollView.frame = CGRectMake(0, 0,
scrollView.contentSize.width, scrollView.contentSize.height);
UIGraphicsBeginImageContextWithOptions(scrollView.contentSize,
NO, [UIScreen mainScreen].scale);
[scrollView.layer renderInContext:
UIGraphicsGetCurrentContext()];
UIImage *image =
UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
scrollView.contentOffset =
savedContentOffset;
scrollView.frame = savedFrame;
return image;
}
4. tableView生成长图
+ (UIImage *)snapshotWithTableView:(UITableView *)tableView {
CGPoint savedContentOffset =
tableView.contentOffset;
CGRect savedFrame = tableView.frame;
tableView.contentOffset = CGPointZero;
tableView.frame = CGRectMake(0, 0,
tableView.contentSize.width, tableView.contentSize.height);
UIGraphicsBeginImageContextWithOptions(tableView.contentSize,
NO, [UIScreen mainScreen].scale);
[tableView.layer renderInContext:
UIGraphicsGetCurrentContext()];
UIImage *image =
UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
tableView.contentOffset = savedContentOffset;
tableView.frame = savedFrame;
return image;
}
5. WKWebView生成长图
+ (UIImage *)snapshotWithWebView:(WKWebView *)webView {
CGPoint savedContentOffset =
webView.contentOffset;
CGRect savedFrame = webView.frame;
webView.contentOffset = CGPointZero;
webView.frame = CGRectMake(0, 0,
webView.contentSize.width, webView.contentSize.height);
UIGraphicsBeginImageContextWithOptions(webView.contentSize,
NO, [UIScreen mainScreen].scale);
[webView.layer renderInContext:
UIGraphicsGetCurrentContext()];
UIImage *image =
UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
webView.contentOffset = savedContentOffset;
webView.frame = savedFrame;
return image;
}
参考来源:https://www.jianshu.com/p/3aa1e3edd1e2