Necesito crear tres columnas dinámicas, cada una con un porcentaje fijo del ancho total. No tercios, sino valores diferentes. Por ejemplo, la siguiente ilustración muestra tres columnas: la primera tiene un 42% de ancho, la segunda un 25% de ancho y la tercera un 33% de ancho.
Para un controlador de vista de 600 píxeles, serían 252, 150 y 198 píxeles respectivamente.
Sin embargo, para cualquier tamaño de pantalla posterior (es decir, iPhone 4 horizontal (960 ancho) o iPad 2 vertical (768 ancho), me gustaría que los porcentajes relativos fueran los mismos (no los anchos de píxeles citados anteriormente).
¿Hay alguna manera de hacer esto usando Storyboards (es decir, sin código)? Puedo hacer esto fácilmente en código, pero mi objetivo es poner la mayor cantidad posible de esta lógica de visualización en el Storyboard.
fuente
Cuando Apple presentó UIStackView , el trabajo fue mucho más fácil.
Método 1: Uso de Nib / StoryBoard:
Solo tiene que agregar tres vistas en el generador de interfaces e incrustarlas en la vista de pila
Seleccione stackView y proporcione una restricción con altura inicial, final, superior e igual con safeArea
Haga clic en el área del inspector de atributos y establezca StackView horizontal y la distribución para llenar proporcionalmente
[ 3
Dar restricción de tres vistas con anterior, posterior, superior, inferior con los respectivos lados.
Método 2: programáticamente:
Salida:
Funciona con paisaje y retrato
Proyecto de demostración: https://github.com/janeshsutharios/UIStackView-with-constraints
https://developer.apple.com/videos/play/wwdc2015/218/
fuente
Creo que esto se puede explicar con más detalle para que se pueda aplicar más fácilmente a cualquier número de vistas que requieran diseños de porcentaje fijo dentro de una supervista.
Vista más a la izquierda
SuperView.Leading
SuperView.Height
Vistas intermedias
SuperView.Height
left
a la derecha de su vecinoVista más a la derecha
left
a la derecha de su vecinoright
aSuperView.Trailing
Todas las vistas
Top Layout Guide.Top
yTop Layout Guide.bottom
. En la respuesta anterior, se observa que esto también se puede hacer estableciendo la misma altura a la vista vecina.fuente