UIScrollView Scrollable Content Size Ambiguity

Kollegen, ich habe Probleme mit AutoLayout im Interface Builder (Xcode 5 / iOS 7). Es ist sehr einfach und wichtig, daher denke ich, dass jeder wissen sollte, wie das richtig funktioniert. Wenn dies ein Fehler in Xcode ist, ist es ein kritischer Fehler!

Wenn ich also eine Ansichtshierarchie wie diese habe, treten Probleme auf:

>UIViewController
>> UIView
>>>UIScrollView
>>>>UILabel (or any other comparable UIKit Element)

Die UIScrollView hat feste Einschränkungen, z. B. 50 Pixel von jeder Seite (kein Problem). Dann füge ich dem UILabel eine Top Space-Einschränkung hinzu (kein Problem) (und ich kann sogar Höhe / Breite des Etiketts anheften, ändert nichts, sollte aber aufgrund der intrinsischen Größe des Etiketts unnötig sein)

Das Problem beginnt, wenn ich dem UILabel eine nachgestellte Einschränkung hinzufüge:

ZB Leerzeichen nach: Superview Entspricht: 25

Jetzt treten zwei Warnungen auf - und ich verstehe nicht warum:

EIN) Mehrdeutigkeit der Größe des bildlauffähigen Inhalts (Die Bildlaufansicht weist eine mehrdeutige Höhe / Breite des bildlauffähigen Inhalts auf)

B) Falsch platzierte Ansichten (Label erwartet: x = -67 Tatsächlich: x = 207

Dieses minimale Beispiel habe ich in einem neuen Projekt erstellt, das Sie herunterladen können, und ich habe einen Screenshot angehängt. Wie Sie sehen, erwartet Interface Builder, dass sich die Beschriftung außerhalb der Grenze von UIScrollView befindet (das orange gestrichelte Rechteck). Durch Aktualisieren des Etikettenrahmens mit dem Tool zum Beheben von Problemen wird er genau dorthin verschoben.

Bitte beachten Sie: Wenn Sie die UIScrollView durch eine UIView ersetzen, ist das Verhalten wie erwartet (der Rahmen der Beschriftung ist korrekt und entspricht der Einschränkung). Es scheint also entweder ein Problem mit UIScrollView zu geben oder mir fehlt etwas Wichtiges.

Wenn ich die App ausführe, ohne den von IB vorgeschlagenen Rahmen des Etiketts zu aktualisieren, wird sie genau dort positioniert, wo sie sein soll, und die UIScrollView kann gescrollt werden. Wenn ich den Frame aktualisiere, ist das Label nicht sichtbar und der UIScrollView scrollt nicht.

Hilf mir, Obi-Wan Kenobi! Warum das zweideutige Layout? Warum die verlegte Ansicht?

Sie können das Beispielprojekt hier herunterladen und versuchen, herauszufinden, was los ist:https://github.com/Wirsing84/AutoLayoutProblem

Antworten auf die Frage(25)

Ihre Antwort auf die Frage