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.LeadingSuperView.HeightVistas intermedias
SuperView.Heightlefta la derecha de su vecinoVista más a la derecha
lefta la derecha de su vecinorightaSuperView.TrailingTodas las vistas
Top Layout Guide.TopyTop 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