iOS 7 memiliki metode baru yang memungkinkan Anda untuk menarik hierarki tampilan ke dalam konteks grafik saat ini. Ini dapat digunakan untuk mendapatkan UIImage dengan sangat cepat.
Saya menerapkan metode kategori UIView
untuk mendapatkan tampilan sebagai 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;
}
Ini jauh lebih cepat daripada renderInContext:
metode yang ada .
Referensi: https://developer.apple.com/library/content/qa/qa1817/_index.html
PEMBARUAN UNTUK SWIFT : Ekstensi yang melakukan hal yang sama:
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
}
}
PEMBARUAN UNTUK SWIFT 3
UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.main.scale)
drawHierarchy(in: self.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return image