programa pro para gratuitas gratis grafico diseño apps app aplicaciones ios iphone autolayout ios8

ios - pro - apps para diseño industrial



Guía de diseño superior de iOS 8 problemas de diseño automático (5)

En lugar de usar el guión gráfico unificado (600x600), debe mantener una de las resoluciones de dispositivo para su creador de interfaces y luego diseñar su pantalla en IB.

Si el tamaño de su controlador de vista es 600x600 en el guión gráfico, entonces, en viewDidLoad, obtendrá ese marco para la vista de su controlador de vista y diseñará las subvistas en consecuencia.

Espero que esto ayude..

Una de las pantallas de mi aplicación se rompió completamente al actualizar al SDK de iOS 8. El problema parece ser que la guía de diseño superior se desplaza hacia arriba en lugar de ser un "ancla" para el resto de las vistas.

Así se veía la vista en iOS 7:

Esto es lo que parece en iOS 8 (capturado desde el depurador de jerarquía de vista de Xcode 6):

Como puede ver, la vista aparece muy por encima de la barra de navegación. Hay dos restricciones en la guía de diseño superior, una para la vista de imagen superior y otra para la vista en blanco debajo de ella. No hay restricciones en la guía de diseño inferior, solo restricciones de altura en las vistas.

Por alguna razón, iOS 8 decide empujar la guía de diseño superior a {0 -255; 0 0} {0 -255; 0 0} después de que [self.view layoutIfNeeded] se llame por primera vez. Además, los límites de la vista a veces parecen demasiado grandes para el dispositivo (es decir, se muestran exactamente como en el guión gráfico unificado (600x600), en lugar de 320x480 / 320x568.

¿Qué ha cambiado en iOS 8 que podría arruinar el diseño?

[EDITAR] Aquí hay una lista completa de las restricciones en la vista:

(lldb) po self.view.constraints <__NSArrayM 0x786ac520>( <NSLayoutConstraint:0x7c377bd0 V:[_UILayoutGuide:0x7c372f60]-(0)-[UIView:0x7c373120]>, <NSLayoutConstraint:0x7c377c00 UIView:0x7c373120.width == UIView:0x7c3730b0.width>, <NSLayoutConstraint:0x7c377c30 UIView:0x7c3730b0.centerX == UIView:0x7c373120.centerX>, <NSLayoutConstraint:0x7c377c60 H:|-(0)-[UIView:0x7c3716f0] (Names: ''|'':UIView:0x7c3730b0 )>, <NSLayoutConstraint:0x7c377c90 UIView:0x7c3716f0.width == UIView:0x7c3730b0.width>, <NSLayoutConstraint:0x7c372f30 V:[_UILayoutGuide:0x7c372f60]-(129)-[UIView:0x7c3716f0]> )


Estoy usando Xcode 6.3.1 y parece que el error está de vuelta en esa versión (supuestamente se corrigió en 5.1). No pude encontrar una solución alternativa en SO, así que tuve que buscar un poco más en Google y aquí está:

en lugar de hacer el Ctrl + arrastre habitual en IB, simplemente seleccione la Vista para la que desea hacer esto y vaya a Editor -> Pin -> Espacio superior a Supervisar.

Aquí está la fuente: LINK Me ayudó en mi caso.


Puede usar UIBarPositionTopAttached o puede usar los límites de vista y los marcos, también puedo sugerirle y vincularlo a la documentación de Apple que le tomará algún tiempo resolver el problema.

La mejor y la forma más fácil de resolver este problema es simplemente incrustar su controlador de vista dentro de un controlador de navegación y eso es todo. Puede hacerlo simplemente seleccionando el controlador de vista y yendo a Editor> Incrustar en> Controlador de navegación. (Si hay contenido en su barra de navegación anterior, primero puede arrastrarlo hacia abajo, incrustar el controlador de vista en el controlador de navegación y luego mover los botones de la barra de navegación nueva y luego eliminar la barra de navegación antigua)

O

Establezca la propiedad translucent la barra de navegación en NO :

self.navigationController.navigationBar.translucent = NO;

Esto evitará que la vista se enmarque debajo de la barra de navegación y la barra de estado.

Si tiene que mostrar y ocultar la barra de navegación, use

if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) self.edgesForExtendedLayout = UIRectEdgeNone; // iOS 7 specific

en su método viewDidLoad

Espero que alguno de estos resolverá su problema.


También tengo un problema así. Si se ejecuta solo en iOS8, puede cambiar las restricciones de "topLayoutGuide.bottom-myView.top" a "topLayoutGuide.top-myView.top". Pero eso romperá la interfaz de usuario para iOS7. Es posible escribir una solución así en el código para admitir ambas versiones, pero no hay posibilidad de que la interfaz de usuario funcione bien para ambas versiones al crear una interfaz de usuario en los guiones gráficos.


Extend Edges > Under Top Bars se comprueba de forma predeterminada en la sección Extender bordes del inspector de atributos.

Intenta desmarcar Under Top Bars .

Esto me ha ayudado muchas veces cuando tuve un comportamiento extraño como este.

Tenga en cuenta que es una propiedad de UIViewController, por lo que puede establecerlo en código si lo desea.