2017-08-27 1 views
0

Ok, also was ich habe, ist ein UIScrollView, das auf alle vier Seiten der Hauptansicht beschränkt ist, sowohl vertikal als auch horizontal zentriert und auf gleiche Breite und Höhe eingestellt ist. Alle Subviews, die ich auf den UIScrollView setze, erscheinen, wenn ich die App ausführe, genau dort, wo ich sie haben möchte, aber nicht nur das UITextView unten. Es scheint, als ob ich jede Kombination von Constraints ausprobiert habe, aber es erscheint nie, wenn ich die App starte, egal was ich mache. Hier ist ein Screenshot der Einschränkungen im Interface Builder:UITextView ist auf UIScrollView nicht sichtbar

Interface Builder

Und selbst wenn ich die Datei Main.storyboard Vorschau vor der Ausführung sieht es wie folgt aus:

Preview of Main.storyboard

Aber als ich tatsächlich die App laufen, der Bildschirm fehlt die UITextView, auch wenn ich die Einschränkungen auf verschiedene Arten ändern:

Running the app

Jede Hilfe mit diesem Problem wird sehr geschätzt! Danke im Voraus.

+2

Warum diese roten Einschränkungen? Sie müssen automatische Layoutprobleme beheben. –

+0

Ja, ich weiß, aber ich kann nicht, dass sie nicht rot sind. Irgendwelche Vorschläge? – James

+0

kann nicht genau sagen, was es ist, aber diese Zeile gibt einen Zweifel: ein UIScrollView, das auf alle vier Seiten der Hauptansicht beschränkt ist, zentriert sowohl vertikal als auch horizontal. Scheint so, als hätten Sie einige unerwünschte Einschränkungen, die Sie angegeben haben. Sie können überprüfen, wo die gesamte Ansichtshierarchie vorhanden ist. Dort sehen Sie oben rechts eine rote Markierung. –

Antwort

0

Vermeiden Sie alle Ihre Subviews setzen direkt im scrollView.Das automatische Layout wird auseinanderbrechen. Sie müssen:

  • ein UIView innerhalb der UIScrollView hinzufügen, mit Einschränkungen 0-0 - 0-0 zu leading-top - bottom-trailing zum UIScrollView und Ihre Subviews alle in diesen UIView setzen.

Danach wird you need to set thecontentSize Ihrer UIScrollView von Code.

Auch können Sie:

  • add missing constraints, um zu sehen, was fehlt.

enter image description here

  • Die linke Tafel in UIStoryBoard (Dokumentgliederung), können Sie den roten Pfeil zeigt nach oben, um zu sehen, was drücken oder widersprüchliche fehlt.

enter image description here

Check out Apple documentation für weitere Details.

+1

Danke für die sehr detaillierte Antwort! Es funktionierte! – James

+0

@James Großartig! :) –

0

Wenn Sie Ihre scrollView nur scrollt vertikal sollten Sie nicht um die Höhe seiner superView gleich eingestellt es so entfernen und legen Sie nur die Breite seiner superView und dann sollte es um die Höhe zu berechnen, basierend auf der subViews Inneren Ich biete Sie ziehen eine UIView in Ihre scrollView und legen Sie die Einschränkungen auf seine vier Seiten, und nennen Sie es containerView, dann legen Sie die Breite gleich der Hintergrundansicht und starten Sie Ihre Ansichten darin nicht innerhalb der scrollview :) Wenn Höhe aller Ansichten in der scrollView ist klar, es kann die scrollView Höhe in diesem Fall können Sie eine feste Höhe zu Ihrem containerView wie 800 zu entnehmen entferne die roten Linien und überprüfe, wie es funktioniert :)

0

Ich habe einige Hinweise bemerkt, die du vielleicht lösen musst, um das Problem zu lösen. Da die Scrollview durch seinen Inhalt der Elemente zu erweitern, müssen Sie explizit mit jedem Element in der Scroll beschäftigen:

  1. Für Imageview auf der Oberseite ist nicht gut eingeschränkt, müssen Sie es mit einer Breite oder das Seitenverhältnis geben. Fix das BildView Problem kann Textview Höhe Problem lösen, auch wenn es nicht immer noch ein guter Anfang ist.

  2. TextView unteren Anker ist gleich ScrollView unteren Anker, aber Sie müssen wissen, TextView ist auch eine Art scrollView. Es ist also nicht sinnvoll, sich gleichzeitig gegenseitig einzuschränken. Weil beide nicht explizit Höhe haben. Sie können versuchen, einige Wörter in die Textansicht einzugeben, die mindestens die Höhe durch ihren Inhalt ergeben, dann kann scrollView den textView bottomAnchor erkennen. Sie könnten dann etwas sehen.

  3. Die Höhe Ihrer scrollView ist gleich der Höhe der Ansicht ist auch seltsam, scrollView sollte nicht zuerst seine Höhe beschränken. Weil es nicht "Scroll" View mehr sein kann, weil seine Höhe konstant ist. Sie sollten die Breite der Ansicht gleich betrachten und die Höhe anhand der Höhe des Elements bestimmen lassen. Dann wird es buchstäblich ein Scrollview sein.

Hoffe, es hilft

Verwandte Themen