2016-06-08 6 views
1

Ich möchte ein UIScrollView in Autolayout erstellen, das seinen Inhalt vollständig enthält (nicht scrollt), bis der Inhalt eine bestimmte Größe hat (sagen 400), und dann beginnt es zu scrollen.Wie ein UIScrollView seine Inhaltsgröße anpassen muss, bis ein Maximum vor dem Bildlauf im Autolayout

So habe ich meine Ansichten wie diese UIScrollView angelegt

Wenn ich Scroll View.height = ContentView.height gesetzt, dann wird der Scrollview erweitert den gesamten Inhalt passen. So weit, ist es gut.

Nun, wenn ich versuche, eine maximale Höhe über Scroll View.height <= 400 zu setzen, was am Ende passiert ist es die ContentView.height auch Sätze (wegen Scroll View.height = ContentView.height) und der Text abgeschnitten wird und es Bildlauf nicht

cut off text

Also ist das überhaupt möglich mit Auto-Layout? Das scheint mit Frames einfach zu sein, aber ich hätte gerne eine Lösung im automatischen Layout.

Hier ist das Beispielprojekt, wenn man sich selbst spielen möchten - https://github.com/iwllyu/content-hugging-uisv-with-max

+0

Gibt es einen Grund, warum Sie keine 'UITextView' anstelle einer Scroll-Ansicht mit einer mehrzeiligen' UILabel' verwenden können? – TylerTheCompiler

+0

Ich könnte eine UITextView verwenden - ich nehme an, ich kann eine maximale Höhe darauf einstellen, und es wird einfach erledigt? – wyu

+1

Eigentlich, vergiss ... Ich denke, die Verwendung eines 'UITextView' würde auch seine eigenen Probleme darstellen. Es gibt keine Möglichkeit, * nur * automatisches Layout zu verwenden, um eine Textansicht so zu erweitern, dass sie zu ihrem Inhalt passt. Daher ist die Verwendung eines 'UILabel' wirklich am besten in dieser Situation ... – TylerTheCompiler

Antwort

2

Sie haben, alles andere richtig. Aber damit dies funktioniert, sollten Sie die Priorität Scroll View.height = ContentView.height Constraint weniger als die Kompressionswiderstands-Priorität Ihrer Subview setzen (d. H. UILabel hier).

Also in Ihrem Fall wird alles unter 750 funktionieren.

+0

Awesome! Ich hatte die Priorität auf der maximalen Höhe, die auf 1000 gesetzt wurde, und der Priorität auf der gleichen Höhe, die auf 750 mit Standardwerten für die Kompressionswiderstandseigenschaft eingestellt wurde. Ich dachte, sie waren nur relativ zueinander, nicht auch zu den Umarmungs-/Kompressionsprioritäten. Danke! – wyu

Verwandte Themen