Preciso criar três colunas dinâmicas, cada uma com uma porcentagem fixa da largura total. Não terços, mas valores diferentes. Por exemplo, a ilustração a seguir mostra três colunas: a primeira com 42% de largura, a segunda com 25% de largura e a terceira com 33% de largura.
Para um controlador de visualização de 600 pixels, isso seria 252, 150 e 198 pixels, respectivamente.
No entanto, para quaisquer tamanhos de tela subsequentes (por exemplo, iPhone 4 paisagem (960 de largura) ou iPad 2 retrato (768 de largura), gostaria que as porcentagens relativas fossem as mesmas (não as larguras de pixel citadas acima).
Existe uma maneira de fazer isso usando Storyboards (ou seja, sem código)? Posso fazer isso facilmente no código, mas meu objetivo é colocar o máximo possível dessa lógica de exibição no Storyboard.
fonte
Quando a Apple apresenta o UIStackView, ele torna o trabalho muito mais fácil.
Método 1: Usando Nib / StoryBoard:
Você tem que apenas adicionar três visualizações no construtor de interface e incorporá-las ao stackview
Selecione stackView e dê restrição com altura inicial, final, superior e igual com safeArea
Clique na área do inspetor de atributos e defina StackView horizontal e distribuição para preencher proporcionalmente
[ 3
Fornece a restrição de três vistas com os lados esquerdo, direito, superior e inferior.
Método 2: programaticamente:
Resultado:
Funciona com paisagem e retrato
Projeto de demonstração - https://github.com/janeshsutharios/UIStackView-with-constraints
https://developer.apple.com/videos/play/wwdc2015/218/
fonte
Acho que isso pode ser explicado com mais detalhes para que possa ser mais facilmente aplicado a qualquer número de visualizações que requeiram layouts de porcentagem fixa em uma supervisão.
Visão mais à esquerda
SuperView.Leading
SuperView.Height
Visualizações intermediárias
SuperView.Height
left
à direita do vizinhoVista mais à direita
left
à direita do vizinhoright
emSuperView.Trailing
Todas as visualizações
Top Layout Guide.Top
eTop Layout Guide.bottom
. Na resposta acima, nota-se que isso também pode ser feito definindo uma altura igual à vista vizinha.fonte