webentwicklung-frage-antwort-db.com.de

Wie erstelle ich für ios uiscrollview nur vertikales Scrollen?

Ich versuche, layout innerhalb von scrollview mit diesem Tutorial zu erstellen https://www.youtube.com/watch?v=UnQsFlMGDsI

Und erhalten Sie das folgende Ergebnis http://youtu.be/iPfzyLbEZMA

Es wird für Ratschläge oder Tutorial-Links geschätzt. Es muss nur vertikal gescrollt werden

8
Alexey Zakevich

Ich bin sicher, dass es andere Wege geben muss, aber dies ist eine schnelle Lösung:

1.) Erstellen Sie eine Breitenbeschränkung für ContentView in Storyborad.

2.) IBOutlet that widthContraint und setze seinen Wert auf die Breite des Ansichtsrahmens in viewDidLoad.

Angenommen, der Name des Constraint-Auslasses lautet contentViewWidthContraint.

contentViewWidthContraint.constant = self.view.bounds.size.width;

Eine andere Alternative, um dies vom Storyboard aus zu tun, besteht darin, die Breite der Inhaltsansicht vom Storyboard aus auf die Breite der Ansicht oder auf die Bildlaufansicht festzulegen, wenn in Scrollview bereits eine Kontraintiefe Gleiche Breite mit Superview vorhanden ist. Fügen Sie die Contraint "Gleiche Breite" von Contentview entweder zu self.view oder zu Scrollview hinzu (wenn Scrollview bereits die Breite-Contraint hat)

10
Jen Jose

Haben Sie die Breite von "ContentView" so eingestellt, dass sie mit der Breite der Bildlaufansicht übereinstimmt? Ich hatte das gleiche Problem und habe es mit " Equal Widths " behoben.

" Equal Widths " teilt Ihrer "ContentView" mit, dieselbe Breite wie die "Scroll-Ansicht" zu verwenden, die auf den Bildschirm passen sollte, wenn Sie die Einschränkung richtig eingestellt haben.

Sie können dies ganz einfach im Storyboard tun.

  1. Drag & Drop mit Rechtsklick (wichtig !!!) von "ContentView" nach "ScrollView"
  2. Lassen Sie den Klick los, Sie werden mit einem Menü aufgefordert, wählen Sie " Gleiche Breite ". 

    Prompted menu

Dies sollte Ihr Problem bei der Verwendung der Bildlaufansicht mit AutoLayout aus dem Storyboard-Editor beheben.

Eine vollständige Anleitung zur Verwendung von ScrollView mit Autolayout und Storyboard hier finden Sie hier. 

Ich hoffe das ist nützlich für dich :)

8
Jesuslg123

Es gibt auch eine andere Möglichkeit, die ein sehr gutes Ergebnis liefert.

Sie können ein Kontrollkästchen markieren:

 enter image description here

O programmatisch:

scrollView.alwaysBounceVertical = true
3
Markus

Legen Sie im Storyboard die Breite der in Ihrem UIScrollView enthaltenen Elemente entsprechend der Breite dieses UIScrollView fest (indem Sie alle Elemente und die UIScrollView-Auswahl im linken Bereich Ihres Storyboards auswählen und dann unter 'Pin' die Einschränkung 'Gleiche Breite' einstellen 'am unteren Rand Ihres Storyboards). Das Anpassen der rechten Seite der Elemente an die des UIScrollView funktioniert nicht, da die Größe der "Anzeigeansicht" an die Breite des größten Elements angepasst wird. Wenn dieses Element kleiner als die Breite des UIScrollView ist, werden alle Elemente verwendet erscheint nur auf seiner linken Seite ausgerichtet. 

3
MCS

Stellen Sie die Breite auf 0 und die Höhe auf die Inhaltsgröße wie folgt ein:

self.scrollView.contentSize = CGSizeMake(0, self.scrollView.contentSize.height);

Dies funktioniert wie Sie möchten. Probieren Sie es aus und sagen Sie, ob noch Probleme auftreten.

0
iYoung

Um den horizontalen Bildlauf zu deaktivieren, können Sie die Inhaltsgröße in der -(void)scrollViewDidScroll-Methode festlegen.

[self.scrollView setContentOffset: CGPointMake(0, self.scrollView.contentOffset.y)];
self.scrollView.directionalLockEnabled = YES;
0
Vineeth Joseph

Um UIScrollView-Einschränkungen wie unter Code festzulegen, wird der gesamte Bildschirm belegt. Die Bildschirmgröße darf nicht überschritten werden.

Leading Space = 0 from mainView
Top Space = 0 from mainView
Bottom Space = 0 from mainView 
Trailing Space = 0 from mainView
0
Jatin Patel

Dies liegt daran, dass die Bildlaufansicht nicht weiß, wo der Inhalt enden soll.

Wenn jedoch für mindestens ein Element in der Bildlaufansicht die Einschränkung "nachlaufendes Leerzeichen" an eine Ansicht außerhalb der Bildlaufansicht angehängt ist (normalerweise befindet sich die Ansicht in der Bildlaufansicht oder in einer anderen Ansicht einer höheren Ebene, die ihre Breite "kennt") ) - Die Bildlaufansicht gibt automatisch eine Vorstellung von der gewünschten Breite und kann nicht horizontal gescrollt werden (es sei denn, die nachstehende Einschränkung impliziert, dass sich Ihr Inhalt außerhalb des Bildschirms befindet).

Besser, wenn für alle Elemente in der Bildlaufansicht die Einschränkungen für den "nachlaufenden Raum" entweder miteinander oder mit einer Ansicht außerhalb der Bildlaufansicht verbunden sind. Aber nicht die Scroll-Ansicht selbst.

Kein zusätzlicher Code oder zusätzliche Einschränkungen, damit dies funktioniert.

0
Vitalii

Sie müssen die Breite von UIScrollView auf oder unter der Breite Ihrer übergeordneten Ansicht festlegen. Zwei Möglichkeiten, dies zu tun: 

1) Sie können dies im Storyboard über Layoutbeschränkungen durchführen

2) Sie können dies programmgesteuert tun: 

self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.scrollView.contentSize.height);
0
M Abdul Sami