2014-11-13 5 views
14

Ich kenne den Grund für diese Warnung und wie sie gelöst werden kann: Um dem Etikett eine bestimmte Breite zu geben.Die Ursache für "Automatische bevorzugte maximale Layoutbreite ist für iOS-Versionen vor 8.0 nicht verfügbar"

Das Problem ist, dass, wenn ich auf diese Warnung klicke, ich keine label/view/viewcontroller ausgewählt sehe. Das Storyboard öffnet sich und das war's. Es gibt viele View-Controller mit vielen Ansichten in meinem Storyboard. Wie kann ich herausfinden, welches Label das Problem verursacht, ohne alle View-Controller manuell durchlaufen zu müssen? Wenn ich auf die Warnung klicke, erwarte ich, dass sie mich zu der Ansicht bringt, die die Warnung verursacht, aber sie öffnet nur das Storyboard.

Antwort

38

Dies ist eine Möglichkeit, die spezifische Markierung zu finden, die diese Warnung verursacht:

  1. rechts auf die Warnung klicken und wählen Sie „Reveal in Log“
  2. Die Warnung im Protokoll wird hervorgehoben. Kopieren Sie die ID des Interface Builder-Objekts für dieses Label (es sieht aus wie xxx-xx-xxx).
  3. Fügen Sie dies in den Find Navigator ein. Wenn Sie auf dieses Ergebnis klicken, wird der Interface Builder mit dem ausgewählten Label geöffnet.
+0

Obwohl es nicht ideal und nicht intuitiv ist, denke ich, dass dies momentan der einzige Weg ist. Vielen Dank. –

+2

"Reveal in Log" scheint in Xcode 6.2 (6C131e) zumindest in diesem .xcworkspace, mit dem ich arbeite, nichts zu tun zu haben. :( – taber

+0

@taber Ja, es tut nichts für mich entweder in 6.2 – bperdue

1

Ist das die Warnung aus einer Sammlungsansicht? Wenn dem so ist, würde ich annehmen, dass es sich um eine Zelle und ein Etikett handelt, bei dem die Anzahl der Zeilen auf Null gesetzt ist.

+0

nein, es war ein normales Etikett. Ich habe es gefunden (es gab mehrere von ihnen). Aber es ist kontraproduktiv, die Ursache des Problems herauszufinden. –

2

Wie gesagt in that post, können Sie auch diese regex verwenden < Label (?!. * PreferredMaxLayoutWidth) in Storyboard Quelle alle Etiketten zu finden, die nicht zu einem preferredMaxLayoutWidth gefassten haben. Dann korrigiere es.

2

Antwort von @Don Eichenseer ist super. Aber für diejenigen, die es lösen wollen: Ich habe das gleiche Problem zuvor. Das Problem lag an einem UILabel, dessen Lines -Eigenschaft (in Attributes Inspector) mehr als 1 war. Wenn Sie die zugehörige UILabel gefunden haben, setzen Sie sie auf 1.

+0

Dies ist keine Lösung. Was ist, wenn das Etikett erforderlich ist –

+0

Ja, das ist keine absolute Lösung.Es ist für die Etiketten, die nicht mehrzeilig sein müssen – Majid

11

Beim Ausführen von XCODE 6.1 habe ich festgestellt, dass der Fehler am einfachsten über den Berichtsnavigator gefunden wurde.

  1. View ->Navigators ->Show Report Navigator oder drücken Sie einfach ⌘-8
  2. Klicken Sie auf das Build im linken Fensterbereich.
  3. Klicken Sie auf das Detailsymbol neben der Warnung.

enter image description here

  1. Finden Sie die Objekt-ID in der Warnung Beschreibung.

enter image description here

  1. Gehen Sie auf die Datei und suchen ⌘-f für das Objekt-ID.

enter image description here

  1. das Problem beheben. Automatic Preferred Max Layout Width is not available on iOS versions prior to 8.0
2

entfernen gerade Anzahl der Linie von Label und legen Sie es programmatisch

[label setNumberOfLines:2]; 
+1

Es ist keine Lösung, nur eine Abhilfe für die Warnung.Ohne –

0

ich das gleiche Problem in einem bestehenden Projekt in 7.1 ohne Autolayouts entwickelt hatte. Sobald ich die App auf iOS8 migriert und in der Projektdatei die Version auf 8.0 geändert habe, bekam ich diese Warnung aus irgendeinem Grund in der Xib, wo ich UILabel's mit mehreren Zeilen verwendete.

, um das Problem, wählen Sie die Datei-Inspektor für die Xib und überprüfen Sie die Version es Builds für, in meinem Fall zu korrigieren, es noch für iOS7 war

enter image description here

Sie die Build-ändern sollte zu die entsprechende Version

enter image description here

und die Warnung verschwindet, wie es :-)

in meinem Fall hat
+0

aber was, wenn ich auch vor iOS unterstützen muss 8? –

+1

Nun, Sie könnten automatische Layouts in iOS7 unterstützen, wie ich erwähnt habe, in meinem Fall, wenn ich nach iOS8 migriert, die Xib blieb in iOS7 (nicht migriert) und ich bekam die Warnung über die "Automatische bevorzugte Max Layout Width ". Sobald ich im File Inspector den Build für iOS8 geändert habe (wie im Projekt), ist die Warnung verschwunden. Ich hoffe, es hilft – Gutty1

0

Ich muss zu XCode 6.2 wechseln -> klicke auf das Warnsymbol oben rechts im XCode-Hauptbereich -> wähle die Warnung -> es zeigt genau den Gegenstand an, der die Warnung verursacht hat. enter image description here

Verwandte Themen