[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];