Abri um projeto iOS existente com o Xcode6 beta6 e o Xcode lista o seguinte aviso para os arquivos Storyboard e Xib:
A largura máxima de layout preferida automática não está disponível nas versões iOS anteriores à 8.0
Eu tentei endereçar o aviso, definindo a largura como explícita como abaixo:
No entanto, isso não resolveu os avisos. Como eles podem ser removidos?
ios
autolayout
ios8
xcode6
mono
fonte
fonte
Respostas:
Atualização 3:
esse aviso também pode ser acionado por rótulos que foram
numberOfLines
definidos como qualquer coisa, exceto 1 se o destino de implantação estiver definido como 7.1. Isso é completamente reproduzível com o novo projeto de visualização única.Passos para reproduzir:
Arquivei o seguinte radar: rdar: // problem / 18700567
Atualização 2:
Infelizmente, isso é uma coisa novamente na versão de lançamento do Xcode 6. Observe que você pode, na maioria das vezes, editar manualmente seu storyboard / xib para corrigir o problema. Por Charles A. nos comentários abaixo:
Atualização 1:
Este bug foi corrigido no Xcode 6 GM.
Resposta original
Esse é um bug no Xcode6-Beta6 e no XCode6-Beta7 e pode ser ignorado com segurança por enquanto.
Um engenheiro da Apple nos fóruns de desenvolvedores da Apple teve este a dizer sobre o bug:
Como alternativa, você pode solucionar o problema usando o inspetor de arquivos no storyboard ou no xib em questão e altere "Builds for" para "Builds for iOS 8.0 and Later"
fonte
<label(?!.*preferredMaxLayoutWidth)
para encontrar rótulos que omitem umpreferredMaxLayoutWidth
atributo / valor. Se você adicionarpreferredMaxLayoutWidth="0"
essas linhas, será o mesmo que marcar como explícito e definir o valor0
.numberOfLines
estiver definido como qualquer coisa, exceto 1, o aviso ocorrerá independentemente de você terpreferredMaxLayoutWidth
definido ou não.preferredMaxLayoutWidth
como 0 explícito, o aviso desaparece independentemente donumberOfLines
valor. Mas talvez isso tenha sido corrigido na atualização do Xcode esta manhã?Para encontrar os rótulos dos problemas em um storyboard grande, siga as etapas abaixo.
Em seguida, revele seu storyboard como arquivo de origem.
Procurar. Você deve saber qual é o rótulo daqui facilmente, observando o conteúdo.
Depois de encontrar o rótulo, a solução que funcionou para mim foi definir a "largura preferida" para 0.
BTW, você sempre pode obter rapidamente o ID de um item de interface selecionando o item e procurando no inspetor de identificação. Muito conveniente.
fonte
Você pode corrigir esse problema sem abrir o storyboard como fonte . Esse aviso é acionado por UILabels se numberOfLines! = 1 e o destino de implantação for <8.0
COMO ENCONTRAR?
fonte
Solução é bastante simples
Basta ativar o Builds para iOS 8 e posterior
fonte
Agora minha versão do Xcode é 6.1. Mas também recebi esse aviso. isso me irrita muito. Depois de pesquisar novamente e novamente. Encontrei a solução.
Motivo: você deve ter definido suas linhas UILabel> 1 no seu Storyboard.
Solução: defina seu atributo UILabel Lines como 1 no Storyboard. reinicie o seu Xcode. Funciona para mim, espero que possa ajudar mais pessoas.
Se você realmente precisa mostrar suas palavras com mais de uma linha. você deve fazer isso no código.
fonte
Para resumir, para mim, seguir as duas instruções acima para alterar quaisquer instâncias em que numberOfLines = 0 para 1 ou mais e adicionar manualmente a opçãoMaxLayoutWidth = "0" a cada instância de um rótulo dentro da fonte do storyboard corrigiu todos os meus avisos.
fonte
Como eu não tenho uma reputação de 50, o Stackoverflow não me permite comentar a segunda melhor resposta. Encontrei outro truque para encontrar o rótulo de culpado no Storyboard.
Então, depois de conhecer o ID do rótulo, abra seu storyboard em uma guia separada com os controladores exibidos e apenas execute o comando F e o comando V e o levará diretamente para esse rótulo :)
fonte
Comecei a trabalhar selecionando o layout original que eu tinha na seleção W / H. O storyboard está funcionando como esperado e o erro desapareceu.
Certifique-se também de estar desenvolvendo para o iOS 8.0. Verifique isso nas configurações gerais do projeto.
É aqui que você deve pressionar.
fonte
Eu tive esse problema e foi capaz de corrigi-lo adicionando restrições para determinar o máximo de um rótulo.
Ao soltar um rótulo com várias linhas, não há restrição definida para impor a largura dentro da visualização pai. É aqui que o novo PreferredMaxWidth entra em cena. No iOS 7 e versões anteriores, você mesmo deve definir a largura máxima. Simplesmente adicionei uma restrição de 10px no lado esquerdo e direito do rótulo.
Você também pode adicionar uma restrição <= width, que também corrige o problema.
Portanto, isso não é realmente um bug, basta você mesmo definir a largura máxima. A opção explícita mencionada em outra resposta também funcionará quando você definir esse valor de largura, no entanto, será necessário modificá-lo se desejar que a largura máxima seja alterada com base na largura pai (como você definiu explicitamente a largura).
Minha solução acima garante que a largura seja sempre mantida, independentemente do tamanho da exibição principal.
fonte
Por algum motivo, mesmo se alterar o Destino de implantação do iOS para 8.0 ou superior, os arquivos Xib não adotam essa alteração e permanecem com as configurações anteriores no Inspetor de arquivos
Portanto, você deve alterá-lo manualmente para cada Xib
Uma vez feito, o aviso desaparecerá :-)
fonte