Diferença entre leftAnchor e LeadAnchor?

119

Tenho trabalhado com restrições no Swift para iOS e a maioria das convenções / documentação de nomenclatura tornam as coisas bastante autoexplicativas, mas uma coisa que me confundiu recentemente são dois pares da classe NSLayoutXAxisAnchor:

leadingAnchor, leftAnchor

junto com

trailingAnchor, rightAnchor

Depois de definir restrições de maneira programática em meu aplicativo iOS, descobri que posso usá-las de forma totalmente intercambiável. Se eu usar o leadAnchor, executar o aplicativo e observar o comportamento e, em seguida, usar leftAnchor, executar o aplicativo e observar o comportamento, ele funcionará exatamente da mesma forma.

Verifiquei a documentação em developer.apple.com e os resultados são exatamente os mesmos (ignorando a diferença de nomes). Por exemplo, comparando o leadAnchor e o leftAnchor:

"Use esta âncora para criar restrições com a borda de ataque da visualização. Você só pode combinar esta âncora com um subconjunto das âncoras NSLayoutXAxisAnchor. Você pode combinar uma âncora principal com outra âncora principal, uma âncora final ou uma âncora central. Para obter mais informações, consulte Classe NSLayoutAnchor Referência."

comparado a:

"Use esta âncora para criar restrições com a borda esquerda da visualização. Você só pode combinar esta âncora com um subconjunto das âncoras NSLayoutXAxisAnchor. Você pode combinar um leftAnchor com outro leftAnchor, um rightAnchor ou um centerXAnchor. Para obter mais informações, consulte Classe NSLayoutAnchor Referência."

Alguém sabe se existe alguma diferença pretendida entre essas propriedades?

Michael Fourre
fonte

Respostas:

272

Isso foi abordado (brevemente) em um dos vídeos da WWDC 2015 sobre os Mistérios do Autolayout (acho que foi a parte 1, mas vale a pena assistir a ambos).

As restrições à esquerda e à direita são absolutas e sempre se referem à esquerda / direita da tela ou do controle. As restrições iniciais e finais são afetadas pela localidade do dispositivo; Em locais onde a direção de leitura é da esquerda para a direita (inglês, francês, espanhol e assim por diante) à esquerda e à direita (e à direita e à direita) podem ser usados ​​alternadamente. Em locais onde a direção da leitura é da direita para a esquerda (por exemplo, hebraico, árabe), 'à direita' será o lado direito e 'à direita' será o lado esquerdo.

O conselho no vídeo era que você quase sempre deveria usar esquerda / direita ao invés de esquerda / direita, a menos que você tenha um requisito específico para esquerda / direita absoluta.

Considere a 'forma' típica de um rótulo e um campo de texto. Se você usar restrições iniciais / finais, obterá o rótulo à esquerda e o campo de texto à direita para um local em inglês e o rótulo à direita e o campo de texto à esquerda para um local em hebraico.

Se você fez um aplicativo infantil onde ensinava da esquerda para a direita e sempre quis o botão 'esquerdo' à esquerda da tela, então as restrições esquerda / direita seriam apropriadas

Paulw11
fonte
9
Excelente informação, obrigado pela resposta. Eu gostaria de ter assistido ao vídeo, então eu mesma saberia disso! Vou marcar isso como a resposta aceita. Obrigado novamente
Michael Fourre,