uitableviewcell dynamically automatic ios swift uitableview uiimageview ios-autolayout

ios - dynamically - uitableview automatic row height



Cómo configurar diferentes restricciones de diseño automático para diferentes tamaños de pantalla (3)

Tengo un tableView con celdas estáticas. La celda contiene un ImageView que lo llena completamente. Y tengo otro ImageViews más pequeño encima. Posiciono este ImageViews con restricciones. Tengo una pregunta acerca de cambiar el tamaño de las restricciones. ¿Cómo puedo configurar diferentes constantes de restricción para diferentes tamaños de dispositivos sin programar si / else bucles. ¿Hay alguna forma de configurarlo en el guión gráfico? Tengo una restricción importante para el diseño principal, por ejemplo, con un valor constante de 10. Esto está bien para la pantalla del iPhone 5, pero en una pantalla del iPhone 6/6 más debería ser mayor que 10.

iPhone5 Autolayout

iPhone6 ​​Autolayout


¡Sin escribir una sola línea de código!

Una vez que mi desarrollador junior me hizo la misma pregunta: ¿cómo puedo diferenciar entre iPhoneSE y iPhone6 ​​por alguna restricción en ese momento? Solo había una solución que escribía algo como

if device == iPhoneSE { constant = 44 } else if device == iPhone6 { constant = 52 }

Para solucionar este problema, creé un Ayudante de diseño de biblioteca para que ahora pueda actualizar la restricción para cada dispositivo sin escribir una sola línea de código.

Paso 1

Asigna el NSLayoutHelper a tu restricción

Paso 2

Actualice la restricción para el dispositivo que desea

Paso 3

Ejecutar la aplicación y ver la magia


Finalmente, he encontrado la solución que funciona en mi caso.

  1. Puse la vista transparente y agregué Alinear Centro X / Y a Supervisión (imagen de fondo) con el desplazamiento necesario de la forma que mejor se adapte a mi marco para los carteles (en la imagen de fondo) - Restricciones para la vista transparente
  2. Luego adjunto el ancho / alto igual a mi Superview (imagen de fondo) para esa vista transparente y cambio el multiplicador en el mismo ancho (elegí manualmente 0.61)
  3. Después de eso, aterricé mi 1 póster. También centré tanto vertical como horizontalmente con offset y utilicé este conjunto de restricciones: ancho proporcional a Superview, relación de aspecto.
  4. Y la última vez que eliminé mi segundo póster con estas restricciones: espacio inicial para Póster1, Alinear en el CentroY con el Póster1 (con el desplazamiento en mi caso) e Igual ancho / alto. Restricciones para el cartel 1/2

Como resultado, tengo Autolayout realmente adaptable que funciona casi de maravilla en los iPhones 5-6-6 +


Muy fácil. Puede cambiar los valores de las constantes para las clases de tamaño de diferencia en el Guión gráfico. Estoy dando ua unos pocos pasos, después de lo cual serás capaz de comprenderlo.

Primero creamos constantes como se puede ver en esta vista.

A continuación, seleccionamos la constante que queremos cambiar el valor en otras clases de tamaño.

Ahora viene la parte difícil. En el inspector de atributos después de seleccionar la constante, puede ver el valor de la constante. Justo al lado puede ver el signo MÁS (+) , a la izquierda de la "constante".

Haga clic en él y seleccione la clase de tamaño que desee. Aquí he seleccionado Ancho regular de altura regular, es decir, para tamaños de iPad.

A continuación le damos un nuevo valor. Así que la constante, que normalmente tiene un valor de 61, funcionará como 10 cuando se represente en una clase de tamaño de clases de tamaño de iPad.

Aquí está la salida - iPhone 4 -

Ipad aire -

Como puede ver, las mismas constantes tienen diferentes valores en tiempo de ejecución que corresponden a clases de diferentes tamaños.

Espero que mi explicación te haya ayudado.