Este aviso acontece no Xcode 6.1. Alguém tem ideias sobre o que esse aviso significa e o que acontecerá com ele? Muito Obrigado!
Abaixo está uma captura de tela com os avisos abertos no código-fonte "
Como descobrir qual restrição causa o aviso? O Xcode não informa qual restrição é o problema.
ios
xcode
cocoa-touch
storyboard
xcode6
Zhihao Yang
fonte
fonte
Respostas:
Este aviso pode ser irritante e acontece a partir do Xcode 6.1.1. O principal problema é que você não pode encontrar facilmente a restrição referenciada clicando no aviso. Eu acho que isso é um bug e será corrigido mais cedo ou mais tarde.
Entretanto, enquanto isso, você pode usar esta pequena solução alternativa:
Etapa 1: detectar aviso irritante 😱
Etapa 2: Clique com o
Reveal in Log
botão direito / Ctrl pressionado no aviso, selecioneEtapa 3: admire a beleza do seguinte snippet de log:
Hmmm ... O que é isso ...?
Etapa 4: jogue isso na barra de pesquisa do projeto ... 😐
Ep Sim, você adivinhou certo. Clique.
Etapa 5: 😁 OMG! Desfrute de alguns minutos extras de produtividade até a Apple corrigir esse bug irritante. 😎
Para 2016 ...
Observe que, para o Xcode de 5/2016, é irritante que você saia e reinicie o Xcode para limpar esse aviso em alguns casos.
Observe que, de maneira confusa, o mesmo erro pode ser causado por um problema não relacionado (este parece ser um bug da Apple ou um uso inadequado da linguagem do erro): se você possui
IBInspectable
itens e os renomeia em seus arquivos Swift. O Xcode não exclui o nome antigo UserDefinedRuntimeAttributes para você. Basta clicar em "Identity Inspector" (item 3 no painel direito) e excluir os itens defeituosos.Para 2017 ...
fonte
Esta mensagem é acionada quando você desativa uma exibição no storyboard, mas não desativa as restrições com base nessa exibição.
Por exemplo, você desativou um botão, mas ainda possui algumas restrições vinculadas a esse botão. Pode ser uma restrição intrínseca, como altura ou largura, ou uma restrição relativa, como a distância de outra visualização.
Você precisa desativar cada uma das restrições que referenciam a exibição e precisa fazê-lo manualmente. O Xcode está sendo excessivamente conservador aqui e não fará isso por você.
fonte
Esta solução funciona para mim.
Como copiei vários itens do projeto que desenvolvi no Xcode 5 para o Xcode 6, e o storyboard no Xcode 6 suporta vários layouts, para cada restrição, preciso instalá-lo na configuração atual.
Por exemplo, estou usando "Largura compacta | Altura regular", para a restrição que preciso definir como abaixo:
Depois de verificar e definir todas as centenas de restrições em meus projetos, limpar e construir, os avisos finalmente desaparecem.
fonte
Installed
caixas de seleção incômodas nos atributos de seu objeto de exibição. Portanto, verifique se os objetos de exibição que você acha que estão sendo exibidos têm a caixa de seleção correta marcada. O aviso está informando que alguns objetos não estão sendo exibidos nocurrent configuration
.Só queria adicionar meu caso como esse erro aconteceu comigo: no meu caso, eu queria excluir um campo de texto com "Cmd + Backspace". Fiz isso diretamente na Scene-Builder Tree-View:
Você pode ver que o campo de repetição está acinzentado.
Então isso foi facilmente descoberto para mim. Você pode simplesmente excluir o campo selecionando:
Editar-Excluir no menu
Surpreendentemente - isso realmente exclui o campo (incluindo as restrições). Talvez isso ajude alguém a encontrar facilmente a causa desse aviso irritante ...
fonte
Explicação expandida
Nada de errado com as outras respostas. Eu só queria chamar a atenção para as palavras do aviso original e identificar alguns casos de uso em que isso pode aparecer no fluxo de trabalho.
Significa que algum item (geralmente um controle ou exibição personalizada normalmente visível) referenciada em uma ou mais restrições está desativado (desabilitado ou com a caixa de seleção "instalada" desmarcada). Se, por exemplo, você decidir mover um controle ou exibição no seu storyboard para fora da exibição principal (ou às vezes, ao fazer algo interessante nas classes de tamanho), poderá receber este aviso se o controle tiver restrições associadas a ele .
Juntamente com a solução recomendada:
Duas abordagens para corrigir
Esboço do Documento
Visualmente, você pode abrir o Esboço do Documento no seu storyboard e procurar as Restrições acinzentadas que referenciam seu controle / visualização fora da vista principal (amplie o contorno, clique na restrição e visualize o inspetor de atributos, clique com o mouse para baixo para revisar rapidamente) . Em seguida, remova a restrição desse contexto (classe de tamanho). Por exemplo, no meu caso, estou apenas mantendo o controle até decidir mais tarde onde apresentá-lo, então escolhi excluir completamente a restrição ofensiva até mais tarde. Mas em uma classe de tamanho, eu apenas desinstalaria a restrição do contexto atual usando a caixa de seleção instalada no inspetor de atributos.
Navegador de registro / Ferramenta de localização
Também é possível continuar usando o Log Navigator para encontrar o controle de problemas por meio do identificador exclusivo dado a cada objeto no storyboard. No log, seria um pouco antes do texto destacado em amarelo e normalmente assume o formulário como visto no meu exemplo acima: jvj-mY-DHf
Usando o identificador, é possível usar a ferramenta de localização no Xcode para localizar e excluir (completamente) ou desinstalar (para o contexto atual) a restrição ofensiva.
Se você gosta do Xml e de sua simplicidade, também pode abrir o Storyboard como código-fonte e encontrar o identificador exclusivo ofensivo e excluir o bloco apropriado de xml.
fonte
Uma das razões pelas quais isso pode acontecer é porque você selecionou uma classe de tamanho incompatível com suas restrições (
wAny hAny
é um caso comum). Nesse caso, basta selecionar uma classe de tamanho diferente no Interface Builder e pronto.fonte
Para mim, isso acontece se eu definir um objeto para uma nova contraint (não para exibir) com a opção "Restringir para margens" não marcada. Problema resolvido com marque a opção (que é o padrão).
fonte
O que funcionou para mim (e eu não tenho idéia do porquê) é desativar "Usar variações de características", executar uma limpeza e ligá-las novamente. A próxima compilação não teve avisos.
Para desativar "Usar variações de características", basta selecionar seu storyboard no Project Navigator e, em seguida, selecionar File Inspector.
Em seguida, basta desmarcar a opção "Usar variações de características", executar a limpeza pressionando Shift-CMD K e, em seguida, reativar as variações de características, se desejar usá-las.
fonte
Eu pensei que era uma restrição persistente devido à outra resposta, no entanto, era devido a uma 'saída' que eu ainda tinha para um item que eu excluí antes. O que fazer é:
No pior cenário, você exclui todas as suas tomadas e as conecta novamente. Caso resolvido!
fonte
Como mencionado e bem orientado na resposta do @ BadCat , segui os passos e apenas mais um passo que ousei dar!
Etapas a serem seguidas após a última etapa da resposta do BadCats:
Passo 1:
Selecionei a restrição no Interface Builder e depois lembrei disso para que serve e depois a excluí.
Passo 2
Crie o projeto XCode e ele mostrará que você pode ter aumentado o número de avisos. Isso ocorre porque você excluiu uma restrição que precisa compilar bem. Então, vá para o 3º passo!
etapa 3
Adicione novamente a restrição que você lembrou (a que você excluiu). E depois reconstrua-o novamente!
Para mim, os avisos desapareceram apenas fazendo isso! Eu acho que isso vai funcionar para algumas pessoas!
Causa:
Como eu pude entender o problema que causou esse aviso, eu tinha um Label conectado a um IBOutlet, mas seu nome estava começando com uma letra maiúscula. Então, eu o renomeei com uma letra simples no ViewController e vim alterá-lo no IB. Eu removi o IBOutlet anterior e fui conectá-lo ao nome da propriedade recém-renomeado e conectado. Então eu notei que há um novo aviso.
Primeiro eu tentei a seguinte resposta também neste tópico, mas não ajudou!
Felicidades!
fonte
Meu caso é escolher o rótulo e, em seguida, clique em Control + X, ele será desativado, mas eu não faço nada com ele. Quando eu construir, ele mostrará um aviso. Solução: remova a etiqueta ou remova o controle escolhido + X para a etiqueta.
fonte
Excluo todos esses elementos da interface do usuário, incluindo suas restrições, e os adiciono novamente, esses avisos simplesmente desaparecem. De qualquer forma, esta é uma maneira pior, mas útil, de resolver isso.
fonte
Eu tive o problema em uma exibição de pilha. Excluir as restrições e adicioná-las novamente não ajudou. A limpeza e a reconstrução não ajudaram.
Para mim, a solução foi criar um objeto de exibição de pilha completamente novo.
Em seguida, mova todos os elementos da exibição antiga da pilha para a nova exibição da pilha.
A exclusão da exibição antiga da pilha corrigiu o problema.
fonte