// MARK: - 截屏
extension UIImage {
public static func snapshot(for scrollView: UIScrollView) -> UIImage {
// 1. 记录当前 scrollView 的偏移和位置
let currentOffset: CGPoint = scrollView.contentOffset;
let currentFrame: CGRect = scrollView.frame;
scrollView.contentOffset = CGPoint.zero;
// 2. 将 scrollView 展开为其实际内容的大小
scrollView.frame = CGRect(x:0, y:0, width: scrollView.contentSize.width, height: scrollView.contentSize.height);
// 3. 第三个参数设置为 0 表示设置为屏幕的默认缩放因子
UIGraphicsBeginImageContextWithOptions(scrollView.contentSize, true, 0)
scrollView.layer.render(in: UIGraphicsGetCurrentContext()!)
let snapshotImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
// 4. 重新设置 scrollView 的偏移和位置,还原现场
scrollView.contentOffset = currentOffset
scrollView.frame = currentFrame
return snapshotImage
}
}
网友评论