How to capture UIView to UIImage without loss of quality on retina display

前端 未结 17 1759
时光取名叫无心
时光取名叫无心 2020-11-22 00:42

My code works fine for normal devices but creates blurry images on retina devices.

Does anybody know a solution for my issue?

+ (UIImage *) imageWith         


        
17条回答
  •  萌比男神i
    2020-11-22 01:21

    Swift 2.0:

    Using extension method:

    extension UIImage{
    
       class func renderUIViewToImage(viewToBeRendered:UIView?) -> UIImage
       {
           UIGraphicsBeginImageContextWithOptions((viewToBeRendered?.bounds.size)!, false, 0.0)
           viewToBeRendered!.drawViewHierarchyInRect(viewToBeRendered!.bounds, afterScreenUpdates: true)
           viewToBeRendered!.layer.renderInContext(UIGraphicsGetCurrentContext()!)
    
           let finalImage = UIGraphicsGetImageFromCurrentImageContext()
           UIGraphicsEndImageContext()
    
           return finalImage
       }
    
    }
    

    Usage:

    override func viewDidLoad() {
        super.viewDidLoad()
    
        //Sample View To Self.view
        let sampleView = UIView(frame: CGRectMake(100,100,200,200))
        sampleView.backgroundColor =  UIColor(patternImage: UIImage(named: "ic_120x120")!)
        self.view.addSubview(sampleView)    
    
        //ImageView With Image
        let sampleImageView = UIImageView(frame: CGRectMake(100,400,200,200))
    
        //sampleView is rendered to sampleImage
        var sampleImage = UIImage.renderUIViewToImage(sampleView)
    
        sampleImageView.image = sampleImage
        self.view.addSubview(sampleImageView)
    
     }
    

提交回复
热议问题