2012-06-30 4 views
5

A veces, las restricciones de la función de autolayout se ajustan a un punto de anclaje incorrecto, como cuando quiero que un control esté anclado a un control superior y la restricción de autodiseño se ancla en la parte inferior de la ventana. ¿Hay alguna manera de mover la restricción? Un arte ASCII debería aclarar esto. Esto es lo que tengo:¿Puedo mover las restricciones de la función de autodiseño en el Creador de interfaces?

+------------------------+ 
|      | 
| [x] Some checkbox  | 
|      | 
| [x] Another checkbox | 
|  |     | 
|  | ← autolayout  | 
|  | constraint  | 
|  |     | 
+-----+------------------+ 

Y esto es lo que quiero en su lugar:

+------------------------+ 
|      | 
| [x] Some checkbox  | 
|  | ← A.C.   | 
| [x] Another checkbox | 
|      | 
|      | 
|      | 
|      | 
+------------------------+ 

puedo anclar la restricción a la casilla superior moviendo la casilla inferior hacia arriba, pero eso no es lo que quiero , Quiero que el espacio vertical sea más grande (Las casillas de verificación son solo para ilustrar, mi caso de uso real tiene diferentes vistas.)

Respuesta

7
  1. Selecciona 2 casillas de verificación
  2. Haga clic en el icono "H" en la parte inferior derecha del constructor de interfaces
  3. Seleccionar vertical espaciado

enter image description here


Ahora seleccione las restricciones inútiles y elimínelas:

enter image description here

+0

+1 Me acabas de salvar de la locura. He estado luchando con un diseño del libro Learn Cocoa in the Mac en las últimas dos horas y seguí empeorando las cosas. Esto justo aquí es exactamente lo que necesitaba para resolver mis problemas. – MetalMikester

1

Intenta mover la casilla inferior para que se obtenga un puntal entre ella y la casilla de verificación de arriba. Luego haga clic en el puntal y haga clic en el cuadro de atributos en el panel derecho. Allí, debería poder desmarcar la casilla "estándar" y configurarla según el espaciado que desee.

1

No, no puede mover una restricción o cambiarla para que sea relativa a una vista diferente. Como dice David Chu, puede mover las vistas hasta que obtenga automáticamente el tipo de restricción que desea y luego cambie el valor de la restricción para cambiar la vista a donde desee. Sin embargo, también puede crear manualmente la restricción que desea y luego eliminar la que no es automática (a veces con cierta dificultad). Así es como en su caso:

Seleccione las 2 casillas de verificación, luego use el menú Editor> Pin> Espaciado vertical para agregar la restricción que desee (o use los botones del medio 3 en la esquina inferior derecha de la vista de diseño de IB para obtener el mismo menú). En ese punto, la restricción automática no deseada debería volverse redundante y pasar de púrpura a azul. Luego puede seleccionarlo y eliminarlo. Cada clase de restricciones se puede crear usando los elementos en esos menús Pin y Alinear.

He encontrado que obtener las restricciones que desea siempre es posible, aunque es una batalla contra las restricciones automáticas que Xcode agrega, y algunas veces un acertijo para encontrar por qué no están cambiando de púrpura a azul. Por ejemplo, al mover una vista directamente después de agregar alguna restricción personalizada, verá que Xcode probablemente borró la mayoría de las restricciones que agregó y volvió a agregar las automáticas, incluso para otras vistas aparentemente aleatorias dentro de la ventana, no solo la que usted ¡movido! Buena suerte.

Cuestiones relacionadas