2010-09-14 10 views
14

Necesito hacer una instantánea o una captura de pantalla -llamarla como desee- de la vista actual y luego mostrarla en la vista modal.[iOS] Cómo hacer una "instantánea" del estado de la vista actual

Porque si sólo escribo esto en vista del controlador de la ModalView

MyAppViewController *viewController = [[MyAppViewController alloc] init]; 
self.view = viewController.view; 

Todos los métodos de la MyAppViewController se llaman así, pero yo no lo necesitan, que sólo tiene que "salvar" a todo lo que estaba en la pantalla cuando apareció el ModalView y lo muestra en la vista de ModalView.

¿Cómo puedo hacerlo? ¡Gracias de antemano!

+0

No estoy seguro de lo que significa: "Todos los métodos de MyAppViewController se llaman también". Una respuesta que me parece demasiado obvia sería simplemente crear una nueva clase con solo los elementos que necesita. Sin embargo, seguramente no entiendo el problema lo suficientemente bien. –

+0

Mi aplicación es un juego. Y cuando el usuario pulsa un botón específico, aparece un Controlador de vista modal y necesita mostrar la Vista del juego en el estado que estaba justo antes de que se tocara el botón. Entonces, los monstruos que fueron asesinados deberían estar muertos, etc. Pero si uso el código de la primera publicación, todo parece que el juego acaba de comenzar – Knodel

+0

¿necesitas una captura de pantalla de imagen plana, o estás buscando guardar el estado actual del juego? . – Bongeh

Respuesta

34

Yo sugeriría hacer esto:

tener un método que crea una imagen de los contenidos de la vista.

-(UIImage*) makeImage { 

UIGraphicsBeginImageContext(self.view.bounds.size); 

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

return viewImage; 
} 

Crear un método init personalizado para su vista modal, y también dar su modalView una variable de instancia que puede contener una UIImage algo así como ...

- (id)initWithImage:(UIImage *)temp { 
    myImage = temp; 
} 

Luego, en su modalView, tal vez en el Método viewDidLoad, cree un UIImageView y establezca la imagen en myImage

Esperemos que esto logre lo que está tratando de hacer.

+0

¡Gracias! Probaré esto – Knodel

+0

¡Sí! ¡Eso es exactamente lo que he necesitado! Muchas gracias! – Knodel

+0

su bienvenida :) – Bongeh

12

En iOS 7, puede utilizar uno de los nuevos métodos en UIView para crear instantáneas, por ejemplo:

- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates; 

que devuelve un UIView que luego se puede añadir al subvista.

0
UIView *viewSnapShop = [self snapshotViewAfterScreenUpdates:NO]; 
Cuestiones relacionadas