2016-04-02 13 views
9

Seit ich auf Xcode 7.3 aktualisiert habe, habe ich ein Problem mit UIStackView. Wenn ich ein leeres Projekt anlege und einfach zwei UILabel s in UIStackView mit standardmäßigen Umarmungs- und Komprimierungsprioritäten eintrage, zeigt es mir AutoLayout-Fehlplatzierungsfehler. Es funktioniert sogar nicht mit einem (!) UILabel in UIStackView, so dass Prioritäten keine Rolle spielen (wie ich denke, vielleicht gibt es das Problem).UIStackView mit UILabels in Xcode 7.3

Wie ich in Xcode vor 7.3 erinnere, war alles in Ordnung. Ich habe zwei MacBook Pro separat überprüft, es ist das gleiche Problem.

Weiß jemand, wie man es repariert?

enter image description here enter image description here

+2

Warum wurde dies abgelehnt? Ich finde es sehr nützlich und spezifisch. – nacho4d

Antwort

9

enter image description here Dies ist ein Fehler in Xcode 7.3, so dass Sie ignorieren können, was er matt sagte.

Das Problem

Das Storyboard kann nicht die intrinsische Inhaltsgröße von Subviews berechnen, wenn Sie UIStackView verwenden

Lösung

Wenn Sie hassen Warnungen in Ihrem Storyboard zu sehen, können Sie es fixe wie unten:

Sie sollten diese Schritte für jede Unteransicht Ihrertun 10

  • Tippen Sie auf die Warnung des subview
  • Tap "Update Rahmen" Option
  • Wählen Sie "Platzhalter" der subview intrinsische Größe im vierten Menü im Inspektor Ansicht

Wie dass Sie keine Warnungen sehen werden, und Sie können sehen, ob Unklarheiten bestehen

Der Nachteil ist, dass Sie diese Schritte jedes Mal tun sollten, wenn Sie Ihre Unteransicht ändern (z. B. le: Ändern der Größe von Text einer UILabel)

der Hoffnung, dass Apple diesen Fehler in der nächsten Version behebt

+0

Hey Hamza. Danke für deine Screenshots! Es wirkt wie ein Zauber! Toller Fund! –

+0

Hey @RalfHundewadt, du bist willkommen, und danke für dein Feedback :) –

+0

Oh Mann, vielen Dank dafür! –

4

die Warnungen ignorieren. Das Storyboard hat Stapelansichten nie ganz verstanden. Die Einschränkungen werden zur Laufzeit korrekt sein und das ist alles was zählt.

+0

Ja, in Runtime funktioniert es, aber auch bis 7.3 in Interface Builder. Weiß Apple das Problem und planen sie es zu beheben? :( – Eugene

+0

Sie tun, wenn Sie einen Fehlerbericht eingereicht haben. Haben Sie? Https://bugreport.apple.com – matt

+0

Ja, tat ich. Warten, mal sehen ... – Eugene

3

ich einen anderen Trick haben die Warnungen für die Beseitigung und machen richtig 'Update-Frames Arbeit.

Vorteil:

Erfordert keine Platzhalter Werte ändern, jedes Mal Text ändert

Nachteil:

Extra-Ansichten, die nicht notwendig sind, wenn Xcode 8

kommt Schritte:

  • Betten Sie jedes UILabel in eine UIView ein.
  • Constrain die UIView Größe selbst auf dem Etikett basiert (Spiel vorangestellten, unten und oben)

Es ist wie UIStackView (in Xcode 7) scheint die intrinsische Inhalt Größe eines Etiketts nicht verstehen , aber KANN die intrinsische Inhaltsgröße einer Ansicht verstehen - also ziehe das Label in eine Ansicht und presto!

enter image description here

+0

Auch bei der aktuellen Version von Xcode 8 (Beta 6) ist dies manchmal notwendig. Fehler eingereicht. – florianbuerger