Publicación por primera vez en desbordamiento de pila.UIView y AutoresizingMask ignoraron
He pasado horas recorriendo muchas búsquedas de Google y, en este punto, prácticamente he memorizado los documentos de referencia de clase UIView y UIViewController. No importa lo que haga, mi aplicación está ignorando mis esfuerzos para cambiar el tamaño de mis puntos de vista sobre el cambio de orientación (o cualquier otra modificación de tamaño de cuadro).
No hay plumillas ni xibs involucrados; Estoy construyendo todos mis puntos de vista y controladores de vista programáticamente, y ellos (los controladores de vista) son todas las subclases de una de las tres subclases UIViewController personalizadas que he creado. Estos súper clases tienen las siguientes líneas en su loadView: método ...
[self setView:[[[UIView alloc] initWithFrame:[self viewFrame]] autorelease]];
[[self view] setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
[[self view] setAutoresizesSubviews:TRUE];
En todos los métodos setter adecuados (donde quiera que añadir una vista secundaria en otras palabras) estoy repitiendo las etapas de aplicar la autoresizingMask. Parece que no importa lo que haga, el resultado siempre es el mismo: hago clic en compilar, hago clic en depuración, espero a que la aplicación se inicie, gire el dispositivo y ¡listo! La vista gira pero no cambia de tamaño en absoluto.
¿Qué me falta aquí? Probablemente es algo obvio que simplemente no estoy viendo. Cualquier ayuda es realmente apreciada, gracias de antemano.
Overriding -setFrame: es una forma bastante confiable de ver que una vista ha cambiado de tamaño. – aksommerville
¡Oh sí, claro! Utilizo esa técnica todo el tiempo cuando la depuración retiene el recuento, pero a menudo omito hacerlo en otras situaciones como esta. (Es curioso lo evasivo que puede ser lo obvio). Para aclarar su comentario para los demás, esto se refiere a reemplazar -setFrame para escupir algún NSLog que le indique el nombre de la vista y algunos valores de cuadro. (No olvides llamar a la implementación de super si pruebas esto.) – quickthyme
Aparte de eso, no usaría ese método para nada más. También me inclino por desactivar la anulación antes de liberar el código como producción. – quickthyme