Реализация для рендеринга любого UIView на изображение (работает также для отображения сетчатки).
файл helper.h:
@interface UIView (Ext)
- (UIImage*) renderToImage;
@end
и принадлежащая ему реализация в файле helper.m:
#import <QuartzCore/QuartzCore.h>
@implementation UIView (Ext)
- (UIImage*) renderToImage
{
// IMPORTANT: using weak link on UIKit
if(UIGraphicsBeginImageContextWithOptions != NULL)
{
UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, 0.0);
} else {
UIGraphicsBeginImageContext(self.frame.size);
}
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
0.0 - масштабный коэффициент. Масштабный коэффициент, применяемый к растровому изображению. Если указать значение 0,0, коэффициент масштабирования будет установлен на коэффициент масштабирования главного экрана устройства.
QuartzCore.framework также следует поместить в проект, поскольку мы вызываем функцию для объекта слоя.
Чтобы включить слабую ссылку в платформе UIKit, щелкните элемент проекта в левом навигаторе, щелкните цель проекта -> фазы сборки -> двоичный файл ссылки и выберите «необязательный» (слабый) тип в платформе UIKit.
Вот библиотека с аналогичными расширениями для UIColor, UIImage, NSArray, NSDictionary, ...