Tengo una vista personalizada que no recibe layoutSubview
mensajes durante la animación.
Tengo una vista que llena la pantalla. Tiene una subvista personalizada en la parte inferior de la pantalla que cambia de tamaño correctamente en Interface Builder si cambio la altura de la barra de navegación. layoutSubviews
se llama cuando se crea la vista, pero nunca más. Mis subvistas están correctamente distribuidas. Si desactivo la barra de estado de la llamada, la subvista layoutSubviews
no se llama en absoluto, aunque la vista principal anima su cambio de tamaño.
¿Bajo qué circunstancias se layoutSubviews
llama realmente?
He autoresizesSubviews
configurado NO
para mi vista personalizada. Y en Interface Builder tengo los puntales superior e inferior y el conjunto de flechas verticales.
Otra parte del rompecabezas es que la ventana debe hacerse clave:
[window makeKeyAndVisible];
de lo contrario, las subvistas no se redimensionan automáticamente.
fuente
layoutSubviews
. ¿initWithFrame:
CausalayoutSubviews
ser llamado?view1.1
se llamalayoutSubviews
deview1
y luegolayoutSubviews
deview1.1
. Esta llamada no se propaga indefinidamente a las supervistas,view1.1.1
solo se llamalayoutSubviews
a las llamadasview1.1
yview1.1.1
. Simplemente moverse sin cambiar su tamaño no llamalayoutSubviews
a ninguno de ellos.view1.2
aview1
,layoutSubviews
deview1.2
yview1
se llama, perolayoutSubviews
deview1.1
no se llama. (view1.1
yview1.2
son subvistas deview1
). Es decir, no todas las subvistas de la vista de destino se denominanlayoutSubviews
método .