iOS 7'de mevcut grafik bağlamına bir görünüm hiyerarşisi çizmenize izin veren yeni bir yöntem var. Bu, bir UIImage'ı çok hızlı almak için kullanılabilir.
UIView
Görünümü aşağıdaki gibi almak için bir kategori yöntemi uyguladım 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;
}
Mevcut renderInContext:
yöntemden çok daha hızlıdır .
Referans: https://developer.apple.com/library/content/qa/qa1817/_index.html
SWIFT İÇİN GÜNCELLEME : Aynı şeyi yapan bir uzantı:
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
}
}
SWIFT 3 İÇİN GÜNCELLEME
UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.main.scale)
drawHierarchy(in: self.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return image