2011-12-29 27 views
9

En algunas ocasiones, no todas las veces, cuando mi aplicación presenta un controlador de vista modal usando presentModalViewController:animated: con modalTransitionStyle establecido en UIModalTransitionStyleFlipHorizontal, la pantalla de inicio del iPhone está visible detrás de la animación. La mayoría de las veces el fondo es negro como se esperaba. No hay nada anormal donde configuré window o rootViewController (a UITabBarController). Apagué la interfaz de usuario de la aplicación pero puede ver el problema en la captura de pantalla tomada con un iPhone 4 mientras la transición está en progreso.¿Qué causaría que la pantalla de inicio del iPhone fuera visible detrás de una transición de solapa modal?

¿Qué podría causar esto? No sé cómo hacerlo aunque quisiera este comportamiento.

EDITAR: Esta captura de pantalla me la envió un probador, no la reprobé yo mismo. Me dijeron que ocurrió durante una sesión de aplicación en particular y que, una vez ocurrida, sucedió en todas las transiciones. Cuando abandonaron/relanzaron la aplicación, no volvió a suceder y no la han vuelto a ver desde entonces. Me pregunto si es algo por lo que deba preocuparme (es decir, puedo evitarlo en el código).

EDIT 2: Esta aplicación no utiliza IB. Todos los controladores/vistas se crean en código.

enter image description here

+0

Esto es extraño que suena un poco como un insecto. No es ideal si no puedes reproducirlo. ¿Establece el color de fondo de la 'UIWindow' en cualquier punto de configuración explícita que podría evitar esto, pero eso es pura especulación. –

+0

No configuré 'backgroundColor' (ni ninguna otra propiedad de visualización) de la ventana.Intenté reproducirlo estableciendo explícitamente el color de fondo de la ventana como 'clearColor' (y me equivoqué con' tabBarController.view', etc.). Si pudiera forzar esto a pasar que podría darme una idea, aún no he encontrado la manera de hacerlo. – XJones

+0

Sí, ese era mi pensamiento. Aunque las nuevas plantillas de Apple tienden a establecer explícitamente la ventana 'self.window.backgroundColor = [UIColor whiteColor];' Podría estar equivocado, pero es probable que haya una situación similar con xibs pre xcode 4.x –

Respuesta

3

He tenido el mismo problema antes. Intente usar [viewController.view setBackgroundColor:[UIColor blackColor]]; en la vista de su empuje. ¡Trabajó para mí de todos modos!

+0

gracias, ahora estoy haciendo eso, pero es posible que no lo haya visto en los comentarios. hasta ahora no hay más repro. Sería bueno saber cómo hacerlo explícitamente que no sea un evento aleatorio (es decir, con errores). – XJones

+0

Sí, siento que probablemente sea más o menos lo que sucede al azar. Solo logré que sucediera algunas veces consecutivas en el iPad, ¡feliz programación! – Chad

+0

No estoy seguro de si esto está realmente relacionado, pero hice este cambio y hasta donde sé, esto nunca ha vuelto a ocurrir. Todavía nunca lo he visto personalmente. Aceptaré esto para cerrarlo. – XJones

0

No estoy seguro pero creo que esto puede ser causado por un error o modificación en el código principal 'UIApplication.h', un problema con el IOS o un problema con la versión de Xcode se tener.

Seb

0

Vi este problema sucediendo incluso con la aplicación Facebook iPhone. Tal vez sea el error de Apple.

2

Esto ocurre cuando iOS envía una advertencia de memoria a la aplicación y el marco de la aplicación vacia automáticamente todos los componentes de vista que no son visibles, excepto que las estructuras de datos relacionadas con viewController se mantendrán, y cuando haya una referencia a la vista cargará la vista desde la punta de nuevo (en su caso se llama a loadView, supongo) debe asegurarse de que su código de construcción de vista sea reconstruible y anular todos los objetos relacionados con los componentes de vista en el método viewDidUnload de su controlador de vista.

También puede hacerlo ejecutando su aplicación mediante simulador y, cuando se encuentre en esa vista modal, active la simulación de "Advertencia de memoria" desde el menú "Dispositivo" en la parte superior de la pantalla de su computadora.

+0

Esta no es la causa de este problema. Estás en lo correcto con respecto a cómo iOS (antes de iOS 6) descarga las vistas en respuesta a las advertencias de memoria, pero ese no es el problema aquí. – XJones

0

Instrucciones a solucionar este problema:

  1. Ir al XI ter efectuado y seleccione el controlador de vista a cabo.
  2. Ir al panel de atributos a la derecha. Vaya a Ver >> Color de fondo.
  3. Ahora configure el color que desea respaldar la transición.

Espero que esto ayude :)

Cuestiones relacionadas