Мне интересно, как мое приложение для iPhone может сделать снимок экрана определенного UIView
как UIImage
.
Я попробовал этот код, но все, что я получил, это пустое изображение.
UIGraphicsBeginImageContext(CGSizeMake(320,480));
CGContextRef context = UIGraphicsGetCurrentContext();
[myUIView.layer drawInContext:context];
UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
myUIView
имеет размеры 320х480 и имеет несколько подвидов. Как правильно это сделать?
Думаю, вам может понадобиться renderInContext
, а не drawInContext
. drawInContext - это скорее метод, который вы могли бы переопределить ...
Обратите внимание, что он может работать не во всех представлениях, особенно год назад, когда я пытался использовать его с видом с камеры в реальном времени, он не работал.
- (void)drawRect:(CGRect)rect {
UIGraphicsBeginImageContext(self.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
}
Этот метод может быть помещен в ваш класс контроллера.
CGImageRef UIGetScreenImage();
Apple теперь позволяет нам использовать его в общедоступном приложении, даже если это частный API