J'ai ouvert un projet iOS existant avec Xcode6 beta6, et Xcode répertorie l'avertissement suivant pour les fichiers Storyboard et Xib:
La largeur de présentation maximale préférée automatique n'est pas disponible sur les versions iOS antérieures à 8.0
J'ai essayé de répondre à l'avertissement en définissant la largeur comme explicite comme ci-dessous:
Pourtant, cela n'a pas résolu les avertissements. Comment peuvent-ils être supprimés?
ios
autolayout
ios8
xcode6
mono
la source
la source
Réponses:
Mise à jour 3:
cet avertissement peut également être déclenché par des étiquettes dont la valeur est différente
numberOfLines
de 1 si votre cible de déploiement est définie sur 7.1. Ceci est entièrement reproductible avec un nouveau projet à vue unique.Étapes à reproduire:
J'ai déposé le radar suivant:
rdar: // problem / 18700567
Mise à jour 2:
Malheureusement, c'est à nouveau une chose dans la version finale de Xcode 6. Notez que vous pouvez, pour la plupart, modifier manuellement votre storyboard / xib pour résoudre le problème. Par Charles A. dans les commentaires ci-dessous:
Mise à jour 1:
ce bogue a maintenant été corrigé dans Xcode 6 GM.
Réponse d'origine
Il s'agit d'un bogue dans Xcode6-Beta6 et XCode6-Beta7 et peut être ignoré en toute sécurité pour l'instant.
Un ingénieur Apple sur les forums des développeurs Apple a dit ceci à propos du bogue:
Alternativement, vous pouvez contourner le problème en utilisant l'inspecteur de fichiers sur le storyboard ou xib en question et changer «Builds for» en «Builds for iOS 8.0 and Later»
la source
<label(?!.*preferredMaxLayoutWidth)
pour trouver des étiquettes qui omettent unpreferredMaxLayoutWidth
attribut / une valeur. Si vous ajoutezpreferredMaxLayoutWidth="0"
sur de telles lignes, cela revient à marquer explicitement et à définir la valeur0
.numberOfLines
est défini sur autre chose que 1, l'avertissement se produira, que vous l'ayezpreferredMaxLayoutWidth
défini ou non.preferredMaxLayoutWidth
0 explicite, l'avertissement disparaît quelle que soit lanumberOfLines
valeur. Mais peut-être que cela a été corrigé dans la mise à jour de Xcode ce matin?Pour trouver les étiquettes de problème dans un grand storyboard, suivez mes étapes ci-dessous.
Ensuite, révélez votre storyboard en tant que fichier source.
Chercher. Vous devriez pouvoir dire de quelle étiquette il s'agit d'ici assez facilement en regardant le contenu.
Une fois que vous avez trouvé l'étiquette, la solution qui a fonctionné pour moi a été de définir la «largeur préférée» à 0.
BTW, vous pouvez toujours obtenir rapidement l'identifiant d'un élément d'interface en sélectionnant l'élément et en regardant sous l'inspecteur d'identification. Très utile.
la source
Vous pouvez résoudre ce problème sans ouvrir le storyboard en tant que source . Cet avertissement est déclenché par UILabels si numberOfLines! = 1 et la cible de déploiement est <8.0
COMMENT LE TROUVER?
la source
Solution c'est assez simple
Activez simplement les versions pour iOS 8 et versions ultérieures
la source
Maintenant, ma version Xcode est 6.1. Mais j'ai aussi reçu cet avertissement. ça m'énerve beaucoup. après avoir cherché encore et encore, j'ai trouvé la solution.
Raison: Vous devez avoir défini vos lignes UILabel> 1 dans votre Storyboard.
Solution: définissez votre attribut UILabel Lines sur 1 dans Storyboard. redémarrez votre Xcode. Cela fonctionne pour moi, j'espère que cela peut aider plus de gens.
Si vous avez vraiment besoin de montrer vos mots sur plus d'une ligne. vous devez le faire dans le code.
la source
Pour résumer, pour moi, en suivant les deux instructions ci-dessus pour modifier toutes les instances où numberOfLines = 0 à 1 ou plus, et en ajoutant manuellement PreferredMaxLayoutWidth = "0" à chaque instance d'une étiquette à l'intérieur de la source du storyboard, tous mes avertissements ont été corrigés.
la source
Comme je n'ai pas 50 points de réputation, Stackoverflow ne me laissera pas commenter la deuxième meilleure réponse. J'ai trouvé une autre astuce pour trouver l'étiquette coupable dans le Storyboard.
Donc, une fois que vous connaissez l'ID de l'étiquette, ouvrez votre storyboard dans un onglet séparé avec les contrôleurs de vue affichés et faites simplement la commande F et la commande V et vous amènera directement à cette étiquette :)
la source
Je l'ai fait fonctionner en sélectionnant la disposition d'origine que j'avais dans la sélection W / H. Le storyboard fonctionne comme prévu et l'erreur a disparu.
Assurez-vous également que vous développez pour iOS 8.0. Vérifiez cela dans les paramètres généraux du projet.
C'est là que vous devez appuyer.
la source
J'ai eu ce problème et j'ai pu le résoudre en ajoutant des contraintes pour déterminer le max avec une étiquette.
Lorsque vous déposez une étiquette multiligne, aucune contrainte n'est définie pour appliquer la largeur à l'intérieur de la vue parent. C'est là que le nouveau PreferredMaxWidth entre en jeu. Sur iOS 7 et versions antérieures, vous devez définir vous-même la largeur maximale. J'ai simplement ajouté une contrainte de 10 pixels aux côtés gauche et droit de l'étiquette.
Vous pouvez également ajouter une contrainte <= width qui résout également le problème.
Ce n'est donc pas vraiment un bug, il vous suffit de définir vous-même la largeur max. L'option explicite mentionnée dans une autre réponse fonctionnera également lorsque vous définissez cette valeur de largeur, mais vous devrez modifier cette valeur si vous souhaitez que la largeur maximale change en fonction de la largeur du parent (car vous avez explicitement défini la largeur).
Ma solution ci-dessus garantit que la largeur est toujours conservée, quelle que soit la taille de la vue parent.
la source
Pour une raison quelconque, même si vous changez la cible de déploiement iOS en 8.0 ou supérieur, les fichiers Xib n'adoptent pas cette modification et conservent les paramètres précédents dans l'inspecteur de fichiers
Par conséquent, vous devez le modifier manuellement pour chaque Xib
Une fois terminé, l'avertissement disparaîtra :-)
la source