Ich bin sicher, dass es andere Möglichkeiten geben muss, dies zu tun, aber eine schnelle Lösung ist:
1.) Erstellen Sie eine Breitenbeschränkung für ContentView in Storyborad.
2.) IBOutlet diese widthContraint und setzen Sie ihren Wert auf die View-Frame-Breite in viewDidLoad.
Angenommen, der Name des Constraint-Auslasses lautet contentViewWidthContraint.
%Vor%Eine weitere Alternative, die Sie vom Storyboard aus vornehmen können, besteht darin, die Breite der Inhaltsansicht vom Storyboard oder der Bildlaufansicht aus auf die Breite der Ansicht anzupassen, wenn Scrollview bereits eine Gleichbreite mit Superview hat. Fügen Sie die "Equal Width" -Begrenzung aus Contentview entweder zu self.view oder zu Scrollview hinzu (wenn scrollview, hat bereits die Breite contraint)
Haben Sie die "ContentView" -Breite so eingerichtet, dass sie mit der Bildlaufbreite übereinstimmt? Ich hatte das gleiche Problem und habe es mit " Gleiche Breite " behoben.
" Gleiche Breite " teilt Ihrem "ContentView" mit, die gleiche Breite der "Scroll-Ansicht" zu verwenden, die dem Bildschirm entsprechen sollte, wenn Sie den Constrain korrekt eingerichtet haben.
Sie können dies einfach auf dem Storyboard tun.
Lassen Sie den Klick los, Sie werden aufgefordert, ein Menü auszuwählen und " Gleiche Breite " auszuwählen.
Dies sollte Ihr Problem mit dem Scrollview mit AutoLayout vom Storyboard Editor beheben.
Sie können eine vollständige Anleitung zur Verwendung von ScrollView mit Autolayout und Storyboard finden hier .
Ich hoffe, das ist nützlich für Sie:)
Stellen Sie im Storyboard die Breite der in Ihrem UIScrollView enthaltenen Elemente auf die Breite dieses UIScrollView ein (indem Sie alle Elemente und das UIScrollView im Panel auf der linken Seite Ihres Storyboards auswählen und dann die Bedingung 'Equal Widths' setzen) unter "Pin" am unteren Ende des Storyboards). Wenn Sie die rechten Seiten der Elemente an die von UIScrollView anheften, funktioniert das nicht, da die Größe der "Anzeigeansicht" an die Breite des größten Elements angepasst wird und diese kleiner ist als die Breite von UIScrollView erscheint nur auf der linken Seite ausgerichtet.
Setzen Sie UIScrollView
constraints wie unter code, so dass es den gesamten Bildschirm belegt. Überschreiten Sie nicht die Bildschirmgröße.
Sie müssen die Breite von UIScrollView gleich oder kleiner als die Breite Ihrer Elternansicht festlegen. Zwei Möglichkeiten, es zu tun:
1) Sie können dies im Storyboard über Layouteinschränkungen tun
2) Sie können dies programmatisch tun:
%Vor% Zum Deaktivieren des horizontalen Bildlaufs können Sie die Inhaltsgröße in der Methode -(void)scrollViewDidScroll
festlegen.
Dies liegt daran, dass die Bildlaufansicht keine Ahnung hat, wo der Inhalt enden soll.
Aber wenn mindestens ein Objekt in Ihrer Bildlaufansicht an eine Ansicht außerhalb der Bildlaufansicht angehängt ist (normalerweise eine Ansicht, in der die Bildlaufansicht sitzt oder eine andere Ansicht einer höheren Ebene, die "weiß" "seine Breite" - die Bildlaufansicht erhält automatisch eine Vorstellung von der gewünschten Breite und scrollt nicht horizontal (es sei denn, die nachfolgende Einschränkung bedeutet, dass der Inhalt außerhalb des Bildschirms liegt).
Besser, wenn für alle Elemente in der Bildlaufansicht die Bedingungen für "nachgestellten Leerzeichen" entweder miteinander oder mit einer Ansicht außerhalb der Bildlaufansicht verbunden sind. Aber nicht die Bildlaufansicht selbst.
Kein zusätzlicher Code oder zusätzliche Einschränkungen erforderlich, damit dies funktioniert.
Tags und Links objective-c ios autolayout ios8 uiscrollview