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.


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];

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


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.