O quadro de aviso para "Barra de navegação" será diferente no tempo de execução exibido no Xcode 8 Swift 3

143

Antes de fazer o upgrade para Xcode 8, ainda não vi esse erro. Eu tenho controladores de navegação diferentes. Para todos eles, vejo um erro Frame for "Navigation bar" will be different at the run time. Navigation bar "Expected: width=384, Actual: width=375. Na realidade, esses controladores de navegação não possuem Navigation bar. Navigation barexiste para sub-visualizações. De qualquer forma eu poderia resolvê-lo por carrapato e desmarque a caixa de seleção Shows navigation barem Attributes inspector. Infelizmente, cada vez que reabrir, Main.storyboardesse aviso aparece novamente. Além disso, se eu clicar no triângulo amarelo e depois nos quadros de atualização, nada acontece.

insira a descrição da imagem aqui

Danny
fonte
1
O mesmo problema foi confirmado aqui. Nenhuma das resoluções sugeridas resolve o problema.
GregP
@GregP, por favor, verifique minha solução e responda
KSR
@Ashish Kakkad, por favor, verifique minha solução e responda
KSR
Rdar arquivado: // 28844288. Sinta-se livre para enganar openradar.me/radar?id=4985464104681472
Guillaume Algis
Este é o meu último aviso que está me incomodando depois de atualizar meu projeto.
Sethmr

Respostas:

154

O aviso desaparecerá se você alterar a propriedade "Tamanho simulado" para "Forma livre".

Kai
fonte
37
Isso não resolve o problema. Feche o Xcode e abra novamente, o problema voltará.
Ashish Kakkad
2
Isso está me incomodando. Acabei de tentar isso e isso remove o aviso temporariamente . Você sempre pode alternar o Tamanho Simulado para frente e para trás para remover o aviso quando ele voltar. Super. Irritante.
21416 nekonari
5
Apenas uma correção temporária - essa não é a resposta.
EMEM
5
Altere esse tamanho simulado (e volte para 'Inferido' ou o que for) ou "alternando a opção Ativar / desativar Ajustes de exibição de rolagem" . Ambos farão com que o Storyboard remova o seu misplaced="YES". Este é um bug do Xcode, e essa correção é do tipo atualização forçada. Retirado da resposta @buildsucceeded.
precisa saber é o seguinte
1
@MobileBloke Com atualização forçada, quis dizer que a exibição do Storyboard reescreverá (atualizará) os parâmetros, reavaliará e removerá o aviso. É realmente uma atualização, a força só significava que não fazia isso automaticamente (como deveria) e precisava de alguma mudança arbitrária manual.
bauerMusic
35

Conforme mencionado aqui, você pode corrigir isso ativando / desativando a opção Ajustar inserções do Scrollview.

buildsucededed
fonte
4
Uau, e (verificando o git) literalmente tudo o que acontece quando você faz isso é que misplaced="YES"é removido. : /
buildsucedeu o
7
Isso o corrige até a próxima vez que você fechar e reabrir o projeto. Não é uma correção completa.
Casey Wagner #
15

Mudei de Visualizar como: iPhone 6S para iPhone 5S, depois mudei novamente para iPhone 6S e o Xcode fez todas as alterações para remover o aviso.

negersiu
fonte
2
Isso funcionou por um curto período de tempo - depois que o Xcode o processou novamente - aconteceu a mesma coisa e o aviso voltou a ocorrer. Isso ainda está funcionando para você no Xcode mais recente?
UKDataGeek
12

Isso funcionou para mim no Xcode 8.3.1 Depois de reiniciar o Xcode, ele ainda funcionaria.

insira a descrição da imagem aqui

  1. Selecione o controlador de navegação

insira a descrição da imagem aqui

  1. Vá para Mostrar o inspetor de tamanho

insira a descrição da imagem aqui

  1. Alterar tamanho simulado para forma livre

insira a descrição da imagem aqui

  1. Alterar tamanho simulado de volta para fixo

insira a descrição da imagem aqui

  1. Então os avisos desaparecem.

insira a descrição da imagem aqui

guoc
fonte
Alguma idéia de por que isso teria funcionado e não o botão "Atualizar quadros"?
Manganês
@ guoc, mano você poderia me ajudar por favor stackoverflow.com/questions/46375778/… ?
May Phyu 23/09
7

Como solução alternativa, para me livrar do aviso irritante, eu editei o Main.storyboard manualmente removendo 'extraviado' em:

<navigationBar key="navigationBar" opaque="NO" contentMode="scaleToFill" misplaced="YES" translucent="NO" id="Os1-Xh-7XN">

Um hack, mas é bom ter zero avisos em vez de 1 :)

Jensie
fonte
Vou ter que adicionar isso de volta mais tarde? Realmente não me importo com a aparência do meu controlador de navegação, desde que não tenha avisos. É meio engraçado. O storyboard reconhece o aviso por uma fração de segundo e desaparece quando você entra no storyboard dessa maneira.
Sethmr
Fiz a mesma coisa e depois não toque no storyboard novamente. Tudo funciona bem.
Zhao
O problema é que, quando você recarrega, volta ... mais alguém percebe que leva muito tempo para carregar o storyboard com o botão giratório em execução quando esse erro ocorre?
UKDataGeek
6

Clique em "Visualizar como", na parte inferior esquerda do seu storyboard, escolha um tamanho de dispositivo diferente, clique nele novamente e volte ao tamanho do dispositivo com o qual você começou. Isso funcionou para mim.

Colby
fonte
1
Ele também só temporário corrigi-lo para mim
zero3nna
3

Até o Xcode 8 ser corrigido, você pode definir a opção "Exibir como:" como "iPhone SE" para eliminar o aviso. Não é o ideal, mas funciona por enquanto.

nekonari
fonte
Eu estou usando SE .. mas ainda Aviso
Abdul Waheed
1
Sim, eu sei. Mas eles desaparecem sempre que você alterna essa seleção para outra coisa. Atualmente, começo com 7, mudo para o SE e, em seguida, volto para 7 para limpar esses avisos. Ou apenas deixe-as e apenas não faça o check- misplacedin das propriedades ao confirmar as alterações.
nekonari
3

Tentei todas as sugestões acima, mas não pareceu funcionar. Eu acho que pode ser um bug mais sério.

Registrei um bug no Apple Bug Reporter (link: https://bugreport.apple.com/logon ) - se você quiser fazer o mesmo, consulte o bug: 31355220para que a Apple possa conectá-lo. Quanto mais pessoas denunciarem, mais informações terão para corrigir esse aborrecimento.

UKDataGeek
fonte
2

Consegui me livrar completamente do problema, definindo o tamanho simulado do controlador de exibição para forma livre e, em seguida, definindo a largura de 375 a 320.

templeman15
fonte
Você só precisa configurá-lo apenas nos controladores de vista que não têm pais (controlador de vista raiz + talvez mais, dependendo do que você tem em seu storyboard)
thetrutz
1

Teve o mesmo problema, eis o que fiz para corrigir:

Expanda as informações do erro e clique nos detalhes do aviso. O Xcode deve então abrir automaticamente as configurações de dimensão / posição. Substitua o valor atual pelo valor sugerido nos detalhes do aviso.

insira a descrição da imagem aqui

Basicamente, verifique se o tamanho no seu tempo de execução é o mesmo que você especificou no inspetor de tamanho.

Você também pode clicar no ícone ao lado da imagem que você postou (o triângulo amarelo com círculo branco. Às vezes, é um ícone de círculo vermelho), haverá opções para corrigir / ajustar automaticamente os problemas.

insira a descrição da imagem aqui

Eu escolhi a opção de atualização de restrições e ajustei as novas restrições de acordo.

user2027373
fonte
4
Não funciona nesta situação. Os campos X / Y / Largura / Altura da Barra de navegação estão acinzentados / não editáveis.
Slipp D. Thompson
@Ian Hmmm… acho que acabei editando o xib para que os números correspondessem.
Slipp D. Thompson
1

para mim, o problema era que eu estava escondendo a barra inferior no push (usando a caixa de seleção IB).

Eu tive que selecionar 'nenhum' na opção 'barra inferior':

insira a descrição da imagem aqui

Radu Ursache
fonte
0

Ok, parece que eu corrigi o problema. Aqui está o que eu fiz.

Selecione os quadros de atualização como normal. Abra um arquivo diferente e clique novamente no arquivo do storyboard. Se isso não funcionar, reinicie o Xcode. Parece que ele estava sendo atualizado internamente, mas a interface do construtor de interface estava bloqueada, como às vezes fica.

GregP
fonte
3
Após a reabertura do Xcode este aviso realmente desaparece, mas se eu abrir qualquer arquivo no projeto um o novamente abrir main.storyboardesses avisos aparecem novamente
Danny
0

Altere a visualização do dispositivo no xcode para o controlador View e compile e verifique se há avisos ...

O Xcode 8 é um buggy de bits, o construtor de interface redefine o valor aleatoriamente, o que afeta todas as visualizações contidas. Tente alterar o seu dispositivo de visualização.

Aks
fonte