Eu costumava usar o autolayout e adicionar novas restrições para criar restrições simples à superview / vista relativa como esta (por muito tempo):
No entanto, recentemente, depois de atualizado para o xcode mais recente (11.3.3 ou apenas 11.3 / 11C29), tenho esse problema estranho: quando defino a constante = 0, eles sempre geram as restrições de uma maneira indesejada como esta:
E parece que o valor padrão é de alguma forma 20 e faz com que minha visão pareça tão errada (0 em comparação com 20?)
Se eu corrigir isso, edite a restrição assim:
Em seguida, ele será corrigido novamente (a imagem é editada após as restrições, antes de editada é exibida constante = Standard
)
Eu nem sei como descrever o problema, mas como faço para corrigir isso add new constraint
para usar meu ponto de desejo em vez de padrão / padrão?
Atualizar:
Parece que só aconteceu quando a restrição da superview. Nenhuma pista de como consertar isso.
Atualização abr-01-2020:
O Xcode11.4 corrigiu isso.
standard
valor (para que possamos definir 10 ou 0 em vez dedefault = 8
), mas esqueci onde está agora. Ou talvez eles tenham removido o recurso?Respostas:
Parece um bug (não esqueça de arquivar na Apple). Aqui está uma solução simples:
Quando você preencher o número no "popover", em vez de digitar
0
, digite0.01
. Isso impedirá que o número mude misteriosamente para "Padrão". Ok, isso0.01
não é o mesmo,0
mas é próximo o suficiente para que você não perceba a diferença e, pelo menos, não precise voltar e alterá-la mais tarde.EDIT A Apple diz que esse bug será corrigido no Xcode 11.4:
fonte
Enquanto a solução alternativa @matt estiver funcionando, eu apenas quero acrescentar que você pode configurá-lo para 0,01 e depois alterá-lo para 0, ele não será alterado novamente para o valor padrão. Nota: Xcode 11.3
fonte
A partir do Xcode 11.3.1:
A solução mais limpa e rápida que encontrei é a seguinte:
Basta digitar no
-0
campo de restrição. O Xcode parece descartar o negativo e se comporta corretamente, o que é melhor do que ler0.01
para tudo.Você pode inserir todas as restrições de uma só vez, sem precisar fazer uma de cada vez ou editar mais tarde.
Xcode exibe os valores como este
Parece um comportamento realmente idiota. Existe uma razão para a Apple ter feito isso deliberadamente ...?
Edit: Isso não parece funcionar sempre , o que é frustrante. Acabei de exibir um UIImageView 0 no Superview, mas ainda assim visualmente no valor padrão (20). Isso realmente parece um bug no IB, pois o comportamento é totalmente ilógico.
fonte
Esse comportamento parece estar corrigido no Xcode 11.4: notas de versão
Resposta original:
Acabei de encontrar esse comportamento também, tentei adicionar as restrições 1 por 1 e o Xcode realmente respeitou o valor 0.
Meus dois centavos.
fonte
Sei que essa não é uma solução, mas para uma solução temporária para impedir que você passe por todas as restrições, acabei de descobrir que você obtém o comportamento desejado se você inserir '-0' em vez de '0', mas precisará inserir uma restrição cada vez.
fonte
Na verdade, não há como resolver esse problema nesse meio tempo
mas a melhor solução temporária é adicionar as restrições com zero, uma por uma.
fonte
ignore isso quando padrão.
depois de adicioná-lo, clique em restringir (linha azul) e no inspetor para restringir o atributo e defina-o como 0.
isso funciona para mim
fonte
Ainda está com esse erro (Xcode 11.3.1). Para corrigi-lo, basta adicionar as restrições como "padrão", clicar nas linhas de restrição azuis e definir o "constante" no inspetor de tamanho como 0.
fonte