Restrição “largura igual à altura” no Interface Builder

92

Não consigo encontrar uma maneira de criar uma restrição 'quadrada', significando 'largura igual à altura' no Interface Builder. Acho que é possível adicionar essa restrição de forma programática. Posso fazer algo no IB? Talvez eu simplesmente não veja? Parece trivial, mas não consigo encontrar.

DemoniacDeath
fonte
Lembro-me de Peter Ammon falando sobre "Confie no Construtor de Interface o máximo possível" na WWDC'12. Que irônico.
DemoniacDeath,
4
Sim, acho que ainda faltam algumas coisas na implementação das restrições de layout. Parece que eles nos deram acesso à maioria dos parâmetros, mas não ao multiplicador, o que seria útil para muitas coisas.
rdelmar
Mas está ficando cada vez melhor! Quer dizer, o Auto Layout foi introduzido há menos de 3 anos e, do meu ponto de vista, o suporte é muito bom hoje em dia.
Lukas Kubanek de

Respostas:

187

Atualize o Xcode 5.1b5

largura é igual a altura

Ctrl + clique e arraste de uma vista e solte enquanto o ponteiro está sobre a vista. Selecione "Proporção". Isso criará uma restrição em que o primeiro e o segundo itens são a visualização.


Antes do Xcode 5.1

Você não pode porque o editor de largura / altura não possui os campos para se relacionar com outra propriedade ou definir a proporção:

restrição de largura

Portanto, você não pode expressar o seguinte código no Interface Builder:

CGFloat ratio = 1.0;
NSLayoutConstraint *constraint = [NSLayoutConstraint
    constraintWithItem:myView
    attribute:NSLayoutAttributeWidth
    relatedBy:NSLayoutRelationEqual
    toItem:myView
    attribute:NSLayoutAttributeHeight
    multiplier:ratio
    constant:0];
constraint.priority = 1000;
[myView.superview addConstraint:constraint];
Jano
fonte
1
Obrigado pela última atualização. O Xcode 5.1 beta 5 na verdade permite que você defina restrições de proporção de aspecto no IB, mas quando tento compilar o projeto, recebo o seguinte erro: Restrições de proporção de aspecto com versões do Xcode anteriores a 5.1 . Então, talvez tenhamos que esperar pela versão 5.1 final. O mesmo pra você, @Jano?
Lukas Kubanek de
Sim, as alterações nos XIBs não são compatíveis com versões anteriores. Se você editar com 5.1, não poderá voltar para versões anteriores.
Jano de
Então você consegue compilar o xib? Não funciona mesmo com o Xcode 5.1 beta 5 para mim.
Lukas Kubanek de
1
@ onmyway133 crie uma restrição entre as duas visualizações e defina o multiplicador para 1: 2.
Jano
3
No Xcode 7, ctrl + clique, arraste da visualização e solte sobre si mesmo, e selecione Proporção
inorganik
1

Adicione uma nova restrição, proporção de 1: 1 no elemento da IU como na imagem.

Defina a proporção de aspecto para 1: 1

user550088
fonte
0

Para começar, controle e arraste diagonalmente do botão para ele mesmo. Um menu contextual aparecerá, onde você pode adicionar restrições de largura e altura. Shift + clique em cada um; uma marca de verificação aparecerá indicando que você adicionou a restrição. (Se você acidentalmente dispensar a caixa de diálogo antes de adicionar ambos, tudo bem, basta repetir a etapa de arrastar e definir a outra):

insira a descrição da imagem aqui

Quando adicionadas pela primeira vez, essas restrições assumem a largura e a altura atuais do botão, então você precisará ajustar cada restrição para dar a ela um valor mais apropriado. Teremos que fazer isso um de cada vez, embora nossa imagem seja quadrada, então certifique-se de usar o mesmo valor constante em ambas as restrições para redimensionar o botão proporcionalmente. Clique duas vezes na restrição e insira um valor menor em seu campo constante:

insira a descrição da imagem aqui

Mohamed AbdelraZek
fonte