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:
- Créer un nouveau projet objectif-c à vue unique
- Définissez la cible de déploiement sur 7.1
- Ouvrez le storyboard du projet
- Déposer une étiquette sur le contrôleur de vue fourni
- Définissez le nombre de lignes de cette étiquette sur 2.
- Compiler
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:
Il convient de mentionner que vous pouvez facilement introduire accidentellement cet avertissement, et l'avertissement lui-même n'aide pas à trouver l'étiquette qui est le coupable. C'est malheureux dans un storyboard complexe. Vous pouvez ouvrir le storyboard en tant que fichier source et effectuer une recherche avec l'expression régulière <label(?!.*preferredMaxLayoutWidth)
pour trouver des étiquettes qui omettent un attribut / valeur préféréMaxLayoutWidth. Si vous ajoutez PreferredMaxLayoutWidth = "0" sur ces lignes, cela revient à marquer explicitement et à définir la valeur 0.
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:
La largeur de mise en page maximale préférée est une propriété de mise en page automatique sur UILabel qui lui permet de se développer automatiquement verticalement pour s'adapter à son contenu. Les versions de Xcode antérieures à 6.0 définiraient la valeur préféréeMaxLayoutWidth pour les étiquettes multilignes à la taille actuelle des limites au moment de la conception. Vous devrez mettre à jour manuellement PreferredMaxLayoutWidth au moment de l'exécution si votre disposition horizontale change.
iOS 8 a ajouté la prise en charge du calcul automatique de PreferredMaxLayoutWidth au moment de l'exécution, ce qui facilite encore plus la création d'étiquettes multilignes. Ce paramètre n'est pas rétrocompatible avec iOS 7. Pour prendre en charge iOS 7 et iOS 8, Xcode 6 vous permet de choisir "Automatique" ou "Explicite" pour PreferredMaxLayoutWidth dans l'inspecteur de taille. Vous devriez:
Choisissez "Automatique" si vous ciblez iOS 8 pour la meilleure expérience. Choisissez "Explicite" si vous ciblez <iOS 8. Vous pouvez ensuite entrer la valeur de PreferredMaxLayoutWidth que vous souhaitez définir. L'activation de "Explicit" revient par défaut à la taille actuelle des limites au moment où vous avez coché la case.
L'avertissement apparaîtra si (1) vous utilisez la mise en page automatique, (2) "Automatique" est défini pour une étiquette multiligne [vous pouvez le vérifier dans l'inspecteur de taille de l'étiquette], et (3) votre cible de déploiement <iOS 8.
Il semble que le bogue est que cet avertissement s'affiche pour les documents non à mise en page automatique. Si vous voyez cet avertissement et n'utilisez pas la disposition automatique, vous pouvez ignorer l'avertissement.
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»