¿Cómo hacer que los controles en la vista no se solapen si son construidos por Interface Builder para Xcode 4.5 y iPhone 5?

Estoy usando el simulador Xcode 4.5 y iPhone 4 y 5, y el Interface Builder añadiría un button UIB en la mitad superior de la pantalla con una restricción superior y agregaría un button UIB en la mitad inferior de la pantalla con una restricción inferior.

Funciona bien en un simulador de iPhone 5, pero en el simulador de iPhone 4, los botones pueden superponerse, o el button inferior puede incluso colocarse sobre el button superior.

Creo que se debe a la restricción, como el button inferior "debe estar a 250 puntos del margen inferior". No puedo eliminar la restricción, y si la cambio a "250 puntos o less", no funcionará, si la cambio a "250 puntos o más", tampoco funcionará.

¿Hay alguna forma de:

1) Hacer que no tenga restricción, sino simplemente la position en absoluto xey? (o ¿qué pasa con la spring en el pasado, para que todo esté más espaciado en el iPhone 5?)

2) Haz que el NIB se convierta en uno solo para iPhone 4 y 4S, de modo que la aplicación funcione bien en iPhone 4 y 4S y solo "negro bloqueado" en el iPhone 5.

3) Hacer que funcione bien en iPhone 5 y funciona bien en iPhone 4 también?

Si conoce soluciones solo a (1), (2) o (3), anteriores, déselo de forma independiente, ya que sigue siendo una solución viable para el período de transición.

En realidad, es muy fácil de reproducir: cree una aplicación de vista única simple usando Xcode 4.5, y arrastre un button justo encima del punto central de la pantalla, y otro justo debajo del punto central de la pantalla. Luego ejecútelo en el simulador. En iPhone 5, es:

introduzca la descripción de la imagen aquí

Y ahora detenga la aplicación y cambie el Dispositivo en el Simulador a iPhone 4S (Retina de 3,5 pulgadas). Si no detiene la aplicación primero, el simulador puede fallar. Ahora ejecute la aplicación nuevamente y los botones se superpondrán:

introduzca la descripción de la imagen aquí

Tuve el mismo problema, y ​​se debió a una configuration equivocada para el autosizing. Para cambiar el tamaño automático, click el control en el generador de interfaz, vaya al inspector de tamaño.

Observe las I rojas en negrita en la cuadrícula de autelección, controlan la location cuando se cambia el tamaño de la pantalla (como al pasar del iPhone 3GS al iPhone 5).

Autoajustando desde la parte inferior izquierda

Creo que funcionará mejor para ti si haces que tu apariencia se vea así:

Cómo autoaplicarse desde arriba a la izquierda

  1. No estoy seguro, ya que no he usado el layout basado en restricciones (y no lo haré hasta que dejemos el soporte para iOS 5). El autorizante basado en NIB tradicional hará coorderadas absolutas.
  2. No puedes hacer eso por una sola pantalla, por lo que yo sé; puedes deshabilitarla para toda tu aplicación eliminando Default-568h@2x.png .
  3. Iba por layout programático, o si quieres la manera fácil (que será un dolor de mantener), diferentes pliegues para diferentes tamaños de pantalla. Tenga en count que querrá manejar correctamente la barra de estado de llamada también …

EDITAR: Coloque los dos botones en una vista de contenedor y haga que el centro de restricción sea el contenedor dentro de su elemento primario. No ajustará el espacio entre los botones, pero debería verse bien en ambos dispositivos.

Seleccione sus botones y agregue una restricción de "espacio vertical" para ellos. Y configure "less de" para los márgenes superior / inferior.