Não entendo por que as pessoas estão reclamando que "as margens causariam uma falha total em qualquer coisa anterior ao iOS 8. "
Definir suas restrições em relação à margem em um arquivo xib ou storyboard NÃO causa falha no aplicativo no iOS7 e também não faz diferença na interface do usuário no dispositivo iOS7, desde que você não toque nas propriedades UIView.layoutMargins
e UIView.preservesSuperviewLayoutMargins
no seu código.
O que são margens no iOS8
As margens do layout representam o preenchimento no interior de um UIView
que o sistema de layout pode usar ao exibir subvisões - para garantir que seja deixado um espaço entre a borda de uma vista e uma subview. Nesse aspecto, é muito parecido com a propriedade padding associada aos blocos no CSS.
Por padrão, um UIView
tem margens de layout de 8 pontos em cada lado, e isso não pode ser alterado no Interface Builder . No entanto, configurando a UIView.layoutMargins
propriedade no código, disponível apenas no iOS8, você pode ajustar esses valores.
Você pode obter o IB para exibir as margens em Editor> Tela> Mostrar retângulos de layout:
As margens podem ser usadas para ajudar a organizar suas visualizações e subvisões. Todos UIView
vêm com margens por padrão, mas eles só afetam o posicionamento da vista quando você configura uma restrição relacionada a uma margem.
Como usar margens
A única maneira de usar margens no Interface Builder é marcar a opção Relativo à margem enquanto configura suas restrições. É assim que você direciona sua restrição para Usar margens em vez de arestas ao exibir minha visão.
Vamos dar uma olhada em quatro maneiras diferentes de configurar uma restrição principal entre uma exibição e sua subvisão. Para cada restrição, revisamos a primeira associação descrita como líder da subvisão e a segunda liderança da superview . O que você deseja prestar muita atenção é o status de verificação e desmarcação da opção Relativo à margem de cada extremidade da restrição, pois isso define se a restrição está vinculada à margem ou à borda da visualização.
- Primeiro item (desmarque), segundo item (verificação): neste caso, estamos declarando que a borda esquerda da subvisão deve se alinhar à margem esquerda da supervisão (como mostrado nesta imagem).
- Primeiro item (desmarque), segundo item (desmarque): ambos usando borda, não margem . Nesse caso, estamos declarando que a borda esquerda da subvisão deve se alinhar à borda esquerda da superview.
- Primeiro item (marcar), segundo item (desmarcar): neste caso, estamos declarando que a margem esquerda da subvisão deve se alinhar à borda esquerda da superview. Esse tipo de layout faz com que a subvisão se sobreponha à superview.
- Primeiro item (cheque), segundo item (cheque). Na verdade, isso tem o mesmo efeito do caso 2, pois a subview e a superview têm a mesma margem padrão. Estamos declarando que a margem esquerda da subview deve estar alinhada com a margem esquerda da superview.
O que há de bom nas margens
Esse novo recurso (iOS8) afeta apenas o desenvolvimento da interface do usuário se você decidir usar margens.
Usando margens, você pode ajustar o posicionamento de várias subvisões que compartilham uma relação comum com uma super visão compartilhada alterando o valor de uma única propriedade. Essa é uma vitória clara sobre a definição de todas as restrições associadas com valores fixos, porque se você precisar atualizar todo o espaçamento, em vez de alterar cada valor um por um, poderá modificar simultaneamente todo o posicionamento relevante, atualizando a margem da superview com uma única linha de código como este:
self.rootView.layoutMargins = UIEdgeInsetsMake(0, 50, 0, 0);
Para ilustrar esse benefício, no caso a seguir, as bordas esquerdas de todas as subvisões estão alinhadas à margem esquerda da superview. Assim, a alteração da margem esquerda da super visão afetará todas as sub visões ao mesmo tempo.