Estou trabalhando com autolayout e restrições e descobri que há uma Constrain to margins
opção no Xcode 6 que não estava presente no Xcode 5 e está marcada por padrão.
Criei um projeto de teste e adicionei um UITableView
em um ViewController com o quadro definido para o mesmo tamanho da visualização e adicionei restrições
Xcode 6 Você pode ver aqui, embora a tableview tenha o mesmo quadro que a exibição que o Xcode sugere para adicionar -16 como restrição, enquanto o Xcode 5 sugere a adição do espaçamento 0.
Agora, quando você desmarca a opção "Restringir à margem", ela se comporta da mesma forma que o Xcode 5 e sugere a adição de 0 como restrição
Além disso, descobri que, depois de adicionar restrição com o Restringir à margem marcada, não consigo mais abrir o arquivo de storyboard no Xcode 5, por isso é definitivamente algo novo no Xcode 6
Felizmente, sou capaz de explicar minha pergunta corretamente. Eu gostaria de entender o que "Restringir à margem" realmente faz e quando devo e não devo usá-lo. Peço desculpas se é algo muito simples e óbvio.
EDITAR
Eu encontrei algo sobre margens de layout em discussão aqui , gostaria de saber se está relacionado a isso.
fonte
Respostas:
Não entendo por que as pessoas estão reclamando que "as margens causariam uma falha total em qualquer coisa anterior ao iOS 8. "
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 aUIView.layoutMargins
propriedade no código, disponível apenas no iOS8, você pode ajustar esses valores.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.
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:
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.
fonte
No iOS 8, agora você tem a opção de definir suas restrições em relação a uma margem predefinida para os limites da superview, em vez dos próprios limites da superview. Sim, está totalmente relacionado às margens do layout que você apontou nos documentos. Uma vantagem é que você pode redefinir suas margens de forma dinâmica ou diferente para cada tipo de dispositivo, e o layout será atualizado de forma correspondente sem modificar as restrições.
Quando usá-lo: quando você quiser tirar proveito dessa nova flexibilidade.
Quando NÃO usá-lo: para qualquer aplicativo direcionado para execução no iOS 7 ou abaixo.
fonte
A propriedade em UIView é:
layoutMargins
. Veja o Apple Docs . Basicamente, se as margens do layout forem 8,8,8,8 (o padrão), uma restrição com 0 espaço à margem do contêiner terá uma posição x igual a 8. Observe que isso só está disponível no iOS8 ou posterior.Para todos que não desejam que suas restrições atinjam a margem do contêiner:
CTRL + clique + arraste para mostrar o pop-up de criação de restrição.
Se o menu mostrar para criar a restrição para a margem por padrão, mantenha pressionada a opção / alt para permitir que a restrição seja feita no contêiner e não na margem do contêiner.
Agora ele mostrará a opção de criar a restrição NÃO na margem. Esta é WAY mais rápido em meu uso.
fonte