Ich habe ein vorhandenes iOS-Projekt mit Xcode6 Beta6 geöffnet und Xcode listet die folgende Warnung für Storyboard- und Xib-Dateien auf:
Die automatische bevorzugte maximale Layoutbreite ist in iOS-Versionen vor 8.0 nicht verfügbar
Ich habe versucht, die Warnung zu beheben, indem ich die Breite wie folgt explizit eingestellt habe:
Dies löste jedoch nicht die Warnungen. Wie können sie entfernt werden?
ios
autolayout
ios8
xcode6
Mono
quelle
quelle
Antworten:
Update 3:
Diese Warnung kann auch durch Beschriftungen ausgelöst werden, die
numberOfLines
auf etwas anderes als 1 festgelegt wurden, wenn Ihr Bereitstellungsziel auf 7.1 festgelegt ist. Dies ist mit einem neuen Single-View-Projekt vollständig reproduzierbar.Schritte zum Reproduzieren:
Ich habe das folgende Radar abgelegt:
rdar: // problem / 18700567
Update 2:
Leider ist dies in der Release-Version von Xcode 6 wieder der Fall. Beachten Sie, dass Sie Ihr Storyboard / xib größtenteils manuell bearbeiten können, um das Problem zu beheben. Per Charles A. in den Kommentaren unten:
Update 1:
Dieser Fehler wurde jetzt in Xcode 6 GM behoben.
Ursprüngliche Antwort
Dies ist ein Fehler in Xcode6-Beta6 und XCode6-Beta7 und kann vorerst ignoriert werden.
Ein Apple - Ingenieur in der Apple Developer Foren hatte diese über den Fehler zu sagen:
Alternativ können Sie das Problem umgehen, indem Sie den Dateiinspektor auf dem betreffenden Storyboard oder xib verwenden und "Builds für" in "Builds für iOS 8.0 und höher" ändern.
quelle
<label(?!.*preferredMaxLayoutWidth)
nach Beschriftungen suchen, bei denen einpreferredMaxLayoutWidth
Attribut / Wert weggelassen wird. Wenn SiepreferredMaxLayoutWidth="0"
solche Zeilen hinzufügen , entspricht dies dem expliziten Markieren und Festlegen des Werts0
.numberOfLines
es auf etwas anderes als 1 gesetzt ist, wird die Warnung unabhängig davon angezeigt, ob Sie siepreferredMaxLayoutWidth
gesetzt haben oder nicht.preferredMaxLayoutWidth
explizite 0 gesetzt habe , verschwindet die Warnung unabhängig vomnumberOfLines
Wert. Aber vielleicht wurde dies heute Morgen im Xcode-Update behoben?Führen Sie die folgenden Schritte aus, um die Problembezeichnung (en) in einem großen Storyboard zu finden.
Zeigen Sie als Nächstes Ihr Storyboard als Quelldatei an.
Suche. Sie sollten in der Lage sein, anhand des Inhalts leicht zu erkennen, um welches Label es sich handelt.
Sobald Sie das Etikett gefunden haben, bestand die Lösung für mich darin, die "bevorzugte Breite" auf 0 zu setzen.
Übrigens können Sie jederzeit schnell die ID eines Schnittstellenelements abrufen, indem Sie das Element auswählen und unter dem Identifizierungsinspektor nachsehen. Sehr praktisch.
quelle
Sie können dieses Problem beheben, ohne das Storyboard als Quelle zu öffnen . Diese Warnung wird von UILabels ausgelöst, wenn numberOfLines! = 1 und das Bereitstellungsziel <8.0 ist
WIE FINDEN SIE ES?
quelle
Lösung ist ganz einfach
Aktivieren Sie einfach Builds für iOS 8 und höher
quelle
Jetzt ist meine Xcode-Version 6.1. Aber ich habe auch diese Warnung bekommen. es nervt mich sehr. Nach der Suche immer wieder. Ich fand die Lösung.
Grund: Sie müssen Ihre UILabel-Zeilen> 1 in Ihrem Storyboard festgelegt haben.
Lösung: Setzen Sie Ihr UILabel Lines-Attribut im Storyboard auf 1. Starten Sie Ihren Xcode neu. Es funktioniert für mich, hoffe es kann mehr Menschen helfen.
Wenn Sie wirklich Ihre Wörter mehr als 1 Zeile zeigen müssen. Sie sollten es im Code tun.
quelle
Zusammenfassend lässt sich sagen, dass das Befolgen der beiden obigen Anweisungen zum Ändern von Fällen, in denen numberOfLines = 0 auf 1 oder höher ist, und das manuelle Hinzufügen von PreferredMaxLayoutWidth = "0" zu jeder Instanz eines Labels in der Storyboard-Quelle alle meine Warnungen behoben hat.
quelle
Da ich keinen Ruf von 50 habe, lässt mich Stackoverflow die zweitbeste Antwort nicht kommentieren. Es wurde ein weiterer Trick gefunden, um das Täterlabel im Storyboard zu finden.
Wenn Sie also die ID des Etiketts kennen, öffnen Sie Ihr Storyboard in einer separaten Registerkarte mit angezeigten Ansichts-Controllern und führen Sie einfach Befehl F und Befehl V aus, um direkt zu diesem Etikett zu gelangen :)
quelle
Ich habe es zum Laufen gebracht, indem ich das ursprüngliche Layout ausgewählt habe, das ich in der W / H-Auswahl hatte. Das Storyboard funktioniert wie erwartet und der Fehler ist behoben.
Stellen Sie außerdem sicher, dass Sie für iOS 8.0 entwickeln. Überprüfen Sie dies anhand der allgemeinen Einstellungen des Projekts.
Hier sollten Sie drücken.
quelle
Ich hatte dieses Problem und konnte es beheben, indem ich Einschränkungen hinzufügte, um das Maximum für ein Etikett zu bestimmen.
Wenn Sie ein mehrzeiliges Etikett ablegen, ist keine Einschränkung festgelegt, um die Breite in der übergeordneten Ansicht zu erzwingen. Hier kommt die neue PreferredMaxWidth ins Spiel. Unter iOS 7 und früheren Versionen müssen Sie die maximale Breite selbst definieren. Ich habe einfach eine 10px-Einschränkung auf der linken und rechten Seite des Etiketts hinzugefügt.
Sie können auch eine <= Breitenbeschränkung hinzufügen, die das Problem ebenfalls behebt.
Dies ist also eigentlich kein Fehler, Sie müssen lediglich die maximale Breite selbst definieren. Die explizite Option, die in einer anderen Antwort erwähnt wird, funktioniert auch, wenn Sie diesen Breitenwert festlegen. Sie müssen diesen Wert jedoch ändern, wenn sich die maximale Breite basierend auf der übergeordneten Breite ändern soll (da Sie die Breite explizit festgelegt haben).
Meine obige Lösung stellt sicher, dass die Breite immer beibehalten wird, egal wie groß die übergeordnete Ansicht ist.
quelle
Selbst wenn das iOS-Bereitstellungsziel auf 8.0 oder höher geändert wird, übernehmen die Xib-Dateien diese Änderung aus irgendeinem Grund nicht und bleiben bei den vorherigen Einstellungen im Dateiinspektor
Daher sollten Sie es für jede Xib manuell ändern
Sobald dies erledigt ist, verschwindet die Warnung :-)
quelle