Getting a screenshot of a UIScrollView, including offscreen parts

前端 未结 12 2246
遥遥无期
遥遥无期 2020-11-22 17:31

I have a UIScrollView decendent that implements a takeScreenshot method that looks like this:

-(void)takeScreenshot {  
  CGRect contextRect  =          


        
12条回答
  •  生来不讨喜
    2020-11-22 17:48

    I took this solution from @Roopesh Mittal's answer and made it safer/cleaner.

    Swift 5 compatible

    fileprivate extension UIScrollView {
        func screenshot() -> UIImage? {
            let savedContentOffset = contentOffset
            let savedFrame = frame
    
            UIGraphicsBeginImageContext(contentSize)
            contentOffset = .zero
            frame = CGRect(x: 0, y: 0, width: contentSize.width, height: contentSize.height)
    
            guard let context = UIGraphicsGetCurrentContext() else { return nil }
    
            layer.render(in: context)
            let image = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext();
    
            contentOffset = savedContentOffset
            frame = savedFrame
    
            return image
        }
    }
    

提交回复
热议问题