Mi diseño actual requiere una animación genial entre las vistas vertical y horizontal de los datos. La representación de datos es bastante compleja, por lo que entre los elementos gráficos y de datos, probablemente haya alrededor de 30 botones y etiquetas en la pantalla a la vez. Creé una interfaz muy bien diseñada ... ahora estoy diseñando los elementos para la vista del paisaje. La única manera que he encontrado para hacer esto hasta ahora es establecer realmente la vista horizontal en el código, por ejemplo:¿Existe algún método para * diseñar visualmente * vistas gemelas (paisaje + retrato) en Interface Builder?
-(void) positionViews {
UIInterfaceOrientation destOrientation = self.interfaceOrientation;
if (destOrientation == UIInterfaceOrientationPortrait || destOrientation == UIInterfaceOrientationPortraitUpsideDown) {
//---if rotating into PORTRAIT mode
timeBGbox.frame = CGRectMake(14, 88, 134, 14);
targetTime.frame = CGRectMake(0, 99, 150, 29);
energyBGbox.frame = CGRectMake(156, 88, 68, 14);
targetEnergy.frame = CGRectMake(154, 99, 70, 29);
speedBGbox.frame = CGRectMake(234, 88, 68, 14);
targetSpeed.frame = CGRectMake(226, 99, 48, 29);
speedLabel.frame = CGRectMake(264, 99, 40, 36);
} else {
//---if rotating to LANDSCAPE mode
timeBGbox.frame = CGRectMake(156, 12, 152, 14);
targetTime.frame = CGRectMake(160, 23, 150, 29);
energyBGbox.frame = CGRectMake(156, 50, 68, 14);
targetEnergy.frame = CGRectMake(154, 61, 70, 29);
speedBGbox.frame = CGRectMake(234, 50, 74, 14);
targetSpeed.frame = CGRectMake(228, 61, 48, 29);
speedLabel.frame = CGRectMake(269, 61, 40, 36);
}
}
Este es un proceso laborioso, teniendo muchas pruebas para llevar a cabo lo que podría hacer visualmente segundos en IB. Actualmente, cuando alterno entre las vistas en IB y muevo los elementos manualmente en modo horizontal, al volver a la posición vertical, están en el lugar equivocado. He usado "muelles y puntales" de la forma más creativa posible, pero la mayoría de mis elementos necesitan una colocación manual precisa más allá del dominio de AutoSizing.
Mi pregunta es: ¿Hay un modo de alternar dentro de IB que permite desarrollar dos diseños gráficos de una vista usando las herramientas de diseño visual, o es el código numérico la única manera?
+1. Esto tiene el inconveniente de que los elementos no se reorganizan en las nuevas posiciones con una animación, solo se puede animar la transición entre las vistas completas. – zoul
Haría eso con una tercera vista, y en el código colocaré todos los elementos en la vista giratoria "temporal" usando los marcos de la vista de retrato, luego animaré las posiciones a la de la vista de paisaje. Todavía usa la técnica que describo, simplemente se expande. Aún puede diseñar el modo horizontal en IB para mayor comodidad. – Bogatyr
gracias Bogatyr ... por aclaración: ¿estás diciendo que cada etiqueta y botón que necesito para abordar necesita una versión _portrait y _landscape? Entonces, básicamente, a lo largo de mi código, ¿actualizaré 2 vistas simultáneamente? – AcroYogi