[iOS] Как сделать "моментальный снимок" текущего состояния просмотра
Мне нужно сделать снимок или скриншот - назовите его как хотите - текущего представления, а затем отобразите его в модальном представлении.
Потому что, если я просто напишу это в контроллере ModalView View
MyAppViewController *viewController = [[MyAppViewController alloc] init];
self.view = viewController.view;
Все методы MyAppViewController также вызываются, но мне это не нужно, мне просто нужно "сохранить" все, что было на экране, когда появился ModalView и показать его в представлении ModalView.
Как я могу это сделать?
Спасибо заранее!
Ответы
Ответ 1
Я бы предложил сделать это:
Есть метод, который создает изображение из содержимого представления.
-(UIImage*) makeImage {
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage;
}
Создайте собственный метод инициализации для вашего модального представления, а также дайте вашему modalView переменную экземпляра, которая может содержать UIImage что-то вроде...
- (id)initWithImage:(UIImage *)temp {
myImage = temp;
}
Затем в вашем modalView, возможно, в методе viewDidLoad, создайте UIImageView и установите изображение на myImage
Надеюсь, это позволит добиться того, что вы пытаетесь сделать.
Ответ 2
В iOS 7 вы можете использовать один из новых методов в UIView для создания моментальных снимков, например:
- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates;
который возвращает UIView, который затем можно добавить как подвью.
Ответ 3
UIView *viewSnapShop = [self snapshotViewAfterScreenUpdates:NO];