iOS 7 में एक नया तरीका है जो आपको वर्तमान ग्राफिक्स संदर्भ में एक पदानुक्रम को देखने की अनुमति देता है। इसका उपयोग बहुत तेजी से UIImage प्राप्त करने के लिए किया जा सकता है।
मैंने एक के UIView
रूप में दृश्य प्राप्त करने के लिए एक श्रेणी पद्धति लागू की UIImage
:
- (UIImage *)pb_takeSnapshot {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [UIScreen mainScreen].scale);
[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
// old style [self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
यह काफी तेजी से तो मौजूदा renderInContext:
विधि है।
संदर्भ: https://developer.apple.com/library/content/qa/qa1817/_index.html
अद्यतन के लिए अद्यतन : एक विस्तार जो ऐसा करता है:
extension UIView {
func pb_takeSnapshot() -> UIImage {
UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.mainScreen().scale)
drawViewHierarchyInRect(self.bounds, afterScreenUpdates: true)
// old style: layer.renderInContext(UIGraphicsGetCurrentContext())
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
स्विफ्ट 3 के लिए अद्यतन
UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.main.scale)
drawHierarchy(in: self.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return image