ios - big - ionic p
Determine el tamaƱo correcto en loadView (4)
He creado una aplicación, carga varias UITextViews, UIButtons y un control UISegment. Lo que hice a la vista WillAppear, llamo a un método de cambio de tamaño que hice.
Cambia los tamaños de todas las subvistas en el UIViewController programmatically. Esto es porque el aumento de tamaño en IB es tan bueno.
En mi función calcViewSize, obtengo las dimensiones de esta manera;
CGFloat width = [[UIScreen mainScreen] applicationFrame].size.width;
CGFloat height = self.view.frame.size.height; //this will retrieve the frame we are drawn into.
Luego recorro cada subvista en el UIViewController que quiero cambiar de tamaño, y cambio su marco. Tengo propiedades para estas vistas en IBOutlet, por lo que ya sé cuáles son las vistas.
Use Interface Builder para obtener las dimensiones.
Una última nota: para cambiar las dimensiones en IB, seleccione la Vista, seleccione el inspector de atributos, deshabilite la Barra de estado, ahora en Inspector de tamaño, puede cambiar el tamaño de la vista, reorganizar sus subvistas y anotar los números para colocar en su código .
¿Cómo determinar constantemente el tamaño correcto para diseñar su vista en loadView?
Tengo diferentes casos donde un UIViewController es empujado a un UINavigationController, o un UITabBarController está presente, o ambos. Estos elementos cambian el área de pantalla disponible y la hacen incoherente si codigo los valores.
En el momento en que se llama a loadView y quiero saber cómo dimensionar la vista del contenedor, agrego mis subvistas.
Miré a través de la guía UIViewController y Apple usa UIScreen mainScreen applicationFrame, pero en su ejemplo esto se hace porque están haciendo una aplicación de pantalla completa.
He visto algunas respuestas aquí, pero ninguna que aborde cómo hacer esto de manera consistente.
Gracias por cualquier ayuda.
La respuesta "correcta" es probablemente crear una subclase UIView personalizada y hacer todo el posicionamiento de la vista subvista en su sustitución de layoutSubviews. Su subclase luego se asignaría a self.view en loadView.
Sin embargo, también funciona para usar viewDidLoad para agregar una subvista de tamaño idéntico a self.view. (Aunque debe estar preparado para que esta vista cambie el tamaño. - Configurar correctamente el aumento automático de las marcas puede ser una buena forma de hacerlo).
- (void) loadView {
//self.wantsFullScreenLayout = YES; //could add this for translucent status bars
UIView *view = [[[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame] autorelease];
self.view = view;
}
Desde la Guía de programación del controlador de vista de Apple para crear vistas mediante programación:
- Cree un objeto de vista raíz que se ajuste a la pantalla. La vista raíz actúa como el contenedor para todas las demás vistas asociadas con su controlador de vista. Por lo general, define el marco de esta vista para que coincida con el tamaño de la ventana de la aplicación, que a su vez debe llenar la pantalla. Sin embargo, el controlador de vista también ajusta el tamaño del marco según sea necesario para acomodar la presencia de vistas variadas, como la barra de estado del sistema, una barra de navegación o una barra de pestañas. Puede usar un objeto UIView genérico, una vista personalizada que defina o cualquier otra vista que pueda escalar para llenar la pantalla.
Luego tiene un ejemplo que es similar al que he escrito anteriormente.
No necesita saber el tamaño exacto. Un VC no debería tener que clasificarse a sí mismo, esa es la responsabilidad de su padre. Simplemente cree una UIView
con [[UIView alloc] init]
confirmada por el ingeniero de Apple UIKit Andy Matuschak en Twitter: https://twitter.com/andy_matuschak/status/365227892151558144