2014-11-04 10 views
21

Also versuche ich eine UIScrollView nur im Storyboard zu erstellen, die mir scrollende Beschriftungen für mehr als die Höhe der VC hinzufügen können. Hier ist, was ich getan habe:UIScrollView im Storyboard funktioniert nicht mit iOS 8 Größenklassen und Autolayout

  1. Erstellt UIScrollView, die die Größe der jede Breite VC jede Höhe

  2. Hergestellt Einschränkungen 0 aufnahm für Abstand zum nächsten Nachbarn oben, unten, links und rechts

  3. Erstellt eine Ansicht, die ist eine subView der UIScrollView mit der gleichen Breite wie die Breite jeder Höhe VC aber Höhe von 1500 (weil ich nur vertikal scrollen möchte).

  4. Sets Einschränkungen nächste Nachbarn als 0 für nur links, oben und rechts und stellen Sie die Höhe Einschränkung als 1500.

  5. habe ich ein Etikett an der Spitze der subView und unten

Wenn ich die App auf einem iPhone 6 ausführen, scrollt nicht vertikal, wie ich es will. Irgendwelche Ideen, warum das nicht funktioniert? Danke im Voraus.

Antwort

45

Um den Bildlauf zu erhalten, müssen Sie die Unteransicht (die "Inhaltsansicht") oben, links, unten und rechts vom Bildlauffeld anheften. Zusätzlich müssen Sie der "Inhaltsansicht" eine explizite (= nicht zur Bildlaufansicht gehörende) Höhe und Breite geben, da diese vom scrollview zur Berechnung der Inhaltsgröße verwendet werden. In Ihrem Fall stellen Sie die Breite gleich der VC-Hauptansichtsbreite und der Höhe auf 1500 ein. Wenn Breite oder Höhe größer als die Scrollview-Größe sind, wird ein Bildlauf ausgeführt.

Scroll Ansicht Constraints (zur Hauptansicht gepinnten)

scroll view constraints

Inhalt Ansicht (gepinnten + Höhe 1500, Breite = Hauptansicht Breite Scroll) + Etikett Constraints (als Beispiel: 20 20 von den Seiten oben links)

content view + label constraints

+0

Perfekt! Es funktioniert jetzt wie erwartet, danke für die Hilfe; Die Bilder waren großartig. – Lucas

+0

Das ist eine fantastische Erklärung! Vielen Dank. Ich konnte auch eine Contention [contentView.width == scrollView.width] im Interface-Builder anstelle einer expliziten contentView-Breite hinzufügen, um einfach eine vertikal scrollbare Scrollansicht zu erhalten. – Des

+1

Dies funktioniert nicht mehr ab Xcode Version 6.1.1 (6A2008a). Ist jemand anderes auf dieses Problem gestoßen? Wenn Sie die Inhaltsansicht an die Bildlaufansicht anheften, wird in meinen Tests nichts angezeigt, was ein einfaches neues Projekt mit nur diesem enthält. – kakubei

1

Haben Sie die Inhaltsgröße größer als der Bildschirm selbst eingestellt? In deinem Fall, nur größer in der Höhe.

Wie in der Apple Dokumentation heißt: "Sie müssen die contentSize-Eigenschaft auf die Größe des scrollbaren Inhalts einstellen. Dies gibt die Größe des scrollbaren Bereichs an."

+0

Wie oben erwähnt, bezieht sich die Bildlaufansicht auf die Inhaltsgröße aus der Inhaltsansicht – Lucas

+1

Wie können wir das erreichen, indem wir nur Storyboards verwenden? – guness

0

Die einzige Lösung ist auf die rechte Seite und die Unterseite des unteren Subview Scroll-Ansicht der Kinder Einschränkungen hinzufügen. Überprüfen Sie auch, ob alle Ansichten von oben nach unten korrekte Abhängigkeiten und Höhe aufweisen. Fügen Sie für die Wrapper-Ansicht der Bildlaufansicht der übergeordneten Ansicht die gleiche Breite und die gleiche Höhe hinzu.