ड्रा के माध्यम से अपने UIView को चित्र में बदलेंहाइरार्कीइंटरक्ट: afterScreenUpdates: जो रेंडर से कई गुना तेज है।
महत्वपूर्ण नोट: इस फ़ंक्शन को viewDidLoad या viewWillAppear से कॉल न करें , सुनिश्चित करें कि यह प्रदर्शित होने के बाद आप इसे कैप्चर कर रहे हैं / पूरी तरह से लोड किया गया है
ओबज सी
UIGraphicsBeginImageContextWithOptions(myView.bounds.size, myView.opaque, 0.0f);
[myView drawViewHierarchyInRect:myView.bounds afterScreenUpdates:NO];
UIImage *snapshotImageFromMyView = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
myImageView.image = snapshotImageFromMyView;
संपादित छवि फ़ोटो एल्बम सहेजें
UIImageWriteToSavedPhotosAlbum(snapshotImageFromMyView, nil,nil, nil);
स्विफ्ट 3/4
UIGraphicsBeginImageContextWithOptions(myView.bounds.size, myView.isOpaque, 0.0)
myView.drawHierarchy(in: myView.bounds, afterScreenUpdates: false)
let snapshotImageFromMyView = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
print(snapshotImageFromMyView)
myImageView.image = snapshotImageFromMyView
एक्सटेंशन, iOS11, स्विफ्ट 3/4 के साथ सुपर आसान सामान्यीकरण
extension UIImage{
convenience init(view: UIView) {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
view.drawHierarchy(in: view.bounds, afterScreenUpdates: false)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.init(cgImage: (image?.cgImage)!)
}
}
Use :
//myView is completly loaded/visible , calling this code after only after viewDidAppear is call
imgVV.image = UIImage.init(view: myView)
// Simple image object
let img = UIImage.init(view: myView)