O Xcode 11 adiciona novas restrições ao conjunto zero: use o valor definido em vez do padrão / padrão


74

Eu costumava usar o autolayout e adicionar novas restrições para criar restrições simples à superview / vista relativa como esta (por muito tempo):

insira a descrição da imagem aqui

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:

insira a descrição da imagem aqui

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:

insira a descrição da imagem aqui

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 constraintpara 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.


2
Mesmo problema aqui. Eu acho que isso apareceu pela primeira vez quando eu atualizei para o 11.3 UPD: O mesmo projeto não tem esse problema em outra máquina com a mesma versão do xcode. Talvez esteja relacionado à configuração do IDE ou talvez seja um bug do próprio IDE.
Dmitrij Rogov

11
O mesmo problema aqui. Usando o Xcode 11.3 (11C29).
user525504

11
Mesmo problema Versão 11.3 (11C29)
user832

11
@DmitrijRogov Lembrei-me algumas vezes antes (xcode 8,9 ou 10), há uma configuração em algum lugar que nos ajuda a definir o standardvalor (para que possamos definir 10 ou 0 em vez de default = 8), mas esqueci onde está agora. Ou talvez eles tenham removido o recurso?
Eddie

5
Isso está me deixando louco #
23719 Buyin Brian

Respostas:


37

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, digite 0.01. Isso impedirá que o número mude misteriosamente para "Padrão". Ok, isso 0.01não é o mesmo, 0mas é 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:

Corrigido um erro que impedia a inserção de uma constante 0 nos editores pop-up de restrição. (54076090)


11
bom trabalho, obrigado!
Eddie

11
Ótimo! Que irritante essa questão pode ser ..
Joaquin Pereira

Está funcionando bem quando uso 0.01 no lugar de 0
Teja 17/02

Mas defini-lo como 0 na segunda vez que funciona. Por que se preocupar com 0,01? É muito chato de qualquer maneira. Ainda bem que é um bug e não um "recurso".
Vlad Rusu 27/02

11

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


Para mim, quando eu o altero novamente para 0, ele muda para "padrão" novamente. Xcode 11.3.1.
John Scalo

10

A partir do Xcode 11.3.1:

A solução mais limpa e rápida que encontrei é a seguinte:

Basta digitar no -0campo de restrição. O Xcode parece descartar o negativo e se comporta corretamente, o que é melhor do que ler 0.01para 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.


9

Esse comportamento parece estar corrigido no Xcode 11.4: notas de versão

Corrigido um erro que impedia a inserção de uma constante 0 nos editores pop-up de restrição. (54076090)


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.


Sim, eu também notei isso nas notas de lançamento, muito bem.
matt

5

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.


esta é realmente uma boa opção, adicionando um '-0' quando você cria as restrições será '0' na inspector, não há necessidade de ir lá e alterá-las
busta117

1

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.


0

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


0

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.

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.