Estoy tratando de utilizar el diseño automático restricciones para cambiar automáticamente el tamaño de un par del mismo tamaño de los botones en una vista para dar el siguiente efecto:

Antes de cambiar el tamaño

Igual anchura y la igualdad de espaciado entre los botones de autodiseño

Efecto deseado después de cambiar el tamaño

Igual anchura y la igualdad de espaciado entre los botones de autodiseño

Como usted puede decir, quiero que los botones son del mismo tamaño y también quiero que el espaciado entre cada botón a ser una constante de 20 puntos. Parece bastante simple a primera vista, así que me puse a las siguientes limitaciones:

  • Botones: el espacio de la izquierda prójimo = 20 (incluido el de más a la izquierda y a la derecha-la mayoría de los botones)
  • Botones: espacio de vecino de la derecha = 20 (incluido el de más a la izquierda y a la derecha-la mayoría de los botones)
  • Botones: el mismo ancho de

Lo que en realidad sucede después de cambiar el tamaño

Igual anchura y la igualdad de espaciado entre los botones de autodiseño

Cuando en la vista previa o cuando lo pruebe ejecutar la aplicación en mi iPhone/simulador, el botón cambia de tamaño y no siga el mismo ancho de la restricción de la que me había propuesto. De hecho, la vista que contiene los puntos de vista también se redimensiona para adaptarse a los nuevos tamaños de los botones. Alguien sabe cómo solucionar este problema puramente en el interface builder?

  • llegó a la adición de «20» píxeles de espacio como se indica más arriba? u puede compartir algo con respecto a la misma?
  • Sí, lo hice por tener que rehacer todo. Por desgracia no he podido averiguar lo que me hizo incorrectamente, por lo tanto yo no publicar una respuesta. Los 3 puntos de arriba es suficiente para satisfacer las restricciones.
  • Desde la mirada de ella probablemente había contenido de la resistencia a la compresión de prioridad no menor que la igualdad de los anchos de las limitaciones de la prioridad de
  • Yo no lo creo. Recuerdo que yo no se meten con cualquier contenido abrazo de compresión de prioridad cuando me dieron el error de la última vez y cuando he conseguido lo hizo.
  • Yo tenía el mismo problema. sugerencia: fue muy reveladora para poner un borde en los botones. el tamaño real de los botones eran más grandes de lo que pensaba. func makeButtonsPretty() { for elemento en los botones { elemento.la capa.borderWidth = 3 } }
InformationsquelleAutor Jian Jie | 2014-10-04

4 Comentarios

  1. 15

    Configuración:

    anchos iguales de todos los botones

    espaciado horizontal entre todos los botones

    líder a superview para el primer botón y trailing a superview para el último botón

    debe hacer el trabajo. A menos que usted está teniendo problemas con el superview (por ejemplo, ScrollView falta de restricciones)

  2. 7

    En la interfaz del generador de establecer el espaciado de las limitaciones entre los botones como se describió anteriormente. A continuación, puede comandos, seleccione todos y especificar la «Igualdad de Ancho» restricción a aplicar a los objetos seleccionados.

  3. 4

    Finalmente me he olvido de cómo resolver este problema. He de prueba funciona como un encanto.

    1. agregar restricciones a elementos del espacio con 20 unidades margen
    2. agregar restricción de edades
    3. ahora la parte difícil
      • para cada elemento agregar restricción de anchos iguales a un padre
      • seleccione todas esta nuevas limitaciones y cambiar sus propiedades
      • fijar el multiplicador para el valor de 1:5
      • constante set para -24 (6 separación entre los elementos y los padres borde da 120, este se multiplica por el valor del multiplicador 1:5 da 24)
      • actualización de los elementos de los marcos de

    Que es! La imagen a continuación muestra cómo se trabaja en el interface builder:

    Igual anchura y la igualdad de espaciado entre los botones de autodiseño

    Conjunto simulado tamaño de «libre» y prueba de diferentes anchos (I sett esta a 330).

  4. 3

    Este problema parece ser debido a mal content hugging priority y content compression Resistance priority. Por lo que debe establecer como bajo contenido de abrazos y de alta resistencia a la compresión (todos deben tener el mismo valor).

    Porque el contenido abrazar es la propiedad que se resisten a una vista para crecer y contenido de la Resistencia a la compresión prioridad es resistir miras a reducir. Para obtener más información acerca de estos se pueden encontrar Pregunta.

    • Gracias por su respuesta. Traté de establecer el contenido abrazos prioridad a 250 y el contenido de la resistencia a la compresión prioridad a 1000 para ambos el botón y la vista, pero el mismo se produce.
    • Por las definiciones de content hugging priority en el enlace a la otra pregunta que has publicado, parece que mi problema está relacionado con los abrazos. También traté de configuración content hugging priority a 1 para los botones y los puntos de vista, pero sigue siendo el mismo.
    • amigo revisa si está utilizando sizeToFitContent a los botones?
    • No, yo no soy. No hay tal propiedad en el IB panel inspector de todos modos. Este problema sólo se produjo cuando estaba tratando de actualizar mi aplicación para usar el diseño automático.

Dejar respuesta

Please enter your comment!
Please enter your name here