Ich habe zwei Tage damit verbracht, die verschiedenen Lösungen für auszuprobieren gemischte und reine Autolayout-Ansätze auszuprobieren , um ein triviales Scrollview-Setup vor dem Autolayout zu erreichen, und es ist jetzt offiziell - ich muss zu dumm sein. Ich richte dies hauptsächlich im Storyboard ein (nun, es ist einfach so wie es ist).
Hier ist meine Bitte um Hilfe.
Ansichtsbaum:
UIView
-UIView
-UIView
..-UIScrollview
...-UIButton
...-UIButton
...-UIButton
Die Tasten sollen horizontal scrollen (von links nach rechts und umgekehrt). Kann jemand bitte mitteilen, wie die Einschränkungen festgelegt werden sollen, um dies mit reinem Autolayout zu erreichen?
- -
Ich habe den gemischten Ansatz so ausprobiert:
UIView
- UIView
- UIView
..-UIScrollview
...-UIView (contentview)
....-UIButton
....-UIButton
....-UIButton
... und Festlegen von Einschränkungen für Breite und Höhe für die contentview
und dietranslatesAutoresizingMaskIntoConstraints
Einstellungen gemäß Apples TechNote. Die Schaltflächen und die Bildlaufansicht werden mithilfe von Einschränkungen eingerichtet. Dadurch wird die Bildlaufansicht gescrollt (yay), aber leider wird zu weit gescrollt! Soweit ich das beurteilen kann, hat sich die Bildlaufbreite gegenüber dem, auf den ich die Inhaltsansicht eingestellt habe, irgendwie verdoppelt ??? !!! ???
Ich habe auch den reinen Autolayout-Ansatz ausprobiert, sowohl mit contentview
als auch ohne. Alle Ansichten sind translatesAutoresizingMaskIntoConstraints=NO
, außer self.view
. Die Schaltflächen haben feste Breiten- / Höhenbeschränkungen und sind an allen vier Kanten der Bildlaufansicht befestigt. Nichts rollt.
Ich bin total verblüfft, warum ich es nicht richtig zum Laufen bringen kann. Jede Hilfe wird sehr geschätzt, und wenn Sie weitere Informationen benötigen, fragen Sie bitte!
AKTUALISIERTER Screenshot mit Lösung - buttonZ Einschränkungen:
EDIT @ Jamie Forrest Die Lösung stellt sich also als die falsche nachfolgende Einschränkung für die letzte Schaltfläche heraus. Anstelle von 6441 war der Wert, den ich eingestellt hatte, negativ, -6441. Das Schwierige ist, dass beim Festlegen des Werts im Storyboard zwei Optionen in der Pin-Symbolleiste angezeigt werden:
Der aktuelle Canvas-Wert ist negativ (führt zu keinem Bildlauf), und die folgende Option ist positiv (Bildlauf aktivieren). Das heißt, ich bin nicht dumm, aber zumindest halb blind, denke ich. Obwohl es zu meiner Verteidigung nicht etwas störend ist, dass XCode keinen Fehler für die "falsche" Einstellung anzeigt?
WIEDER BEARBEITET Nun, das ist lustig ... Ändern des nachgestellten Werts von -6441 (kein Bildlauf) auf 6441 aktiviertes Bildlauf. Aber mein alter Freund, die "zu große Inhaltsgröße", war zurück, was zu einer Inhaltsgröße führte, die doppelt so groß war, wie sie sein sollte! Die Lösung, um den richtigen Bildlauf für den Inhalt zu erhalten, bestand darin, die nachfolgende Einschränkung auf NULL zu setzen! Dies ist nicht offensichtlich, wenn Sie in Storyboard arbeiten, aber wenn Sie sich den Code von @Infinity James ansehen, ist es genau das, was es sein sollte.
contentSize
eines UIScrollView
nur mit Auto - Layout. Und es ist das contentSize
, was definiert, wie viel Sie scrollen können. Sie müssen dies also irgendwann irgendwo manuell einstellen. Im Übrigen können Sie Layoutbeschränkungen verwenden, um Ansichtsrahmen relativ zueinander einzurichten.