截屏

// 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
    }
}

你可能感兴趣的:(截屏)