ios - launchscreen - main storyboard xcode
tamaƱo de fotograma incorrecto en viewDidLoad (2)
Posible duplicado:
¿Por qué tengo que configurar manualmente el marco de mi vista en viewDidLoad?
Tengo una aplicación universal para iphone y ipad, dos guiones gráficos, si ejecuto mi aplicación en el simulador de iphone en viewDidLoad
cada fotograma de cada elemento en el plumín es correcto. Pero si lo hago para ipad (simulador) en el cuadro es nulo, pero la pantalla parece correcta. ¿Podrías por favor asesorarme algo? Gracias.
Es una pregunta muy similar a ios setContentOffset que no funciona en el iPad ... Y mi respuesta es la misma que allí:
"No debe inicializar elementos relacionados con la geometría de UI en viewDidLoad
, porque la geometría de su vista no está configurada en este momento y los resultados serán impredecibles.
... viewWillAppear:
es el lugar correcto para hacer estas cosas, en este punto la geometría está configurada para que obtener y establecer las propiedades relacionadas con la geometría tenga sentido ".
Esto también se aplica a obtener propiedades relacionadas con la geometría. No te distraigas por su comportamiento correcto en una circunstancia y no en otra ... El punto principal es que establecer / obtener propiedades de geometría demasiado pronto arrojará resultados impredecibles .
Su pantalla se ve correcta porque está viendo los resultados después de viewWillAppear:
/ viewDidAppear:
actualización (ios6)
Al utilizar el autolayout en ios6, los marcos no se configuran hasta que se hayan establecido las subvistas. El lugar correcto para obtener datos de marcos en estas condiciones se encuentra en el método viewDidLayoutSubviews
.
Esto se llama después de viewWillAppear:
Pero ten cuidado: no siempre se llaman juntos. Por ejemplo, se llama a viewDidLayoutSubviews
después de una rotación, viewWillAppear:
no lo es. viewWillAppear:
se viewWillAppear:
cada vez que una vista se convierte en la vista visible *, viewDidLayoutSubviews
no necesariamente (solo si las vistas necesitan retransmitirse).
(* a menos que la aplicación esté en segundo plano y se convierta en la aplicación en primer plano, entonces viewWillAppear:
no se llama)
Me di cuenta de por qué sucedió. Estaba usando AutoLayout. Cuando lo desactivo en el guión gráfico, los marcos son correctos.