In IB gibt es eine Option zum Deaktivieren des vertikalen Bildlaufs in einer Bildlaufansicht, die jedoch anscheinend nicht funktioniert.
Wie kann die Bildlaufansicht so eingestellt werden, dass sie nur horizontal und nicht vertikal im Code und nicht in IB scrollt?
iphone
ios
uiscrollview
System
quelle
quelle
Antworten:
Versuchen Sie, die Höhe von contentSize auf die Höhe von scrollView einzustellen. Dann sollte der vertikale Bildlauf deaktiviert werden, da nichts zum vertikalen Bildlauf vorhanden wäre.
quelle
seit iOS7:
Erstens: Die Breite der Inhaltsgröße muss der Breite Ihrer Bildlaufansicht entsprechen
zweitens: in Ihrem initWithNibName:
Das ist es.
quelle
Ja, die Antwort von pt2ph8 ist richtig.
Sollte Ihre contentSize jedoch aus irgendeinem seltsamen Grund höher als die UIScrollView sein, können Sie das vertikale Scrollen deaktivieren, indem Sie die UIScrollView-Protokollmethode implementieren
Fügen Sie dies einfach in Ihren UIViewController ein
Dies ist nur die Methode, die aufgerufen wird, wenn der Benutzer durch Ihre UIScrollView scrollt und dabei erzwingt, dass der Inhalt immer dieselbe .y hat
quelle
float oldY;
im obigen Code beschrieben. Dies ist ein Variablensymbol im C-Stil. Pro Anwendung MUSS die Variable als Instanzmitglied der Controller-Klasse deklariert werden.Schließen Sie die folgende Methode ein
und stellen Sie die Breite der Inhaltsgröße der Bildlaufansicht gleich der Breite der Bildlaufansicht ein.
quelle
Sie müssen 0 in der Inhaltsgröße übergeben, um zu deaktivieren, in welche Richtung Sie möchten.
Deaktivieren des vertikalen Bildlaufs
Deaktivieren des horizontalen Bildlaufs
quelle
Ich habe die Inhaltsgröße aktualisiert, um das vertikale Scrollen zu deaktivieren, und die Fähigkeit zum Scrollen blieb weiterhin erhalten. Dann stellte ich fest, dass ich auch den vertikalen Sprung deaktivieren musste, um den Bildlauf vollständig zu deaktivieren.
Vielleicht gibt es auch Leute mit diesem Problem.
quelle
Sie müssen bestätigt haben
UIScrollViewDelegate
quelle
Stellen Sie einfach das y so ein, dass es immer oben ist. Muss mit UIScrollViewDelegate übereinstimmen
Dadurch bleibt der Verzögerungs- / Beschleunigungseffekt des Bildlaufs erhalten.
quelle
Denken Sie unter iOS 11 daran, Folgendes hinzuzufügen, wenn Sie eine Bildlaufansicht erstellen möchten, die sich an die Bildschirmgrenzen und nicht an einen sicheren Bereich hält:
quelle
Ab iOS11 kann man die folgende Eigenschaft verwenden
Wenn Sie Einschränkungen für frameLayoutGuide.topAnchor und frameLayoutGuide.bottomAnchor auf dieselben Anker in einer Unteransicht Ihrer scrollView festlegen, wird der vertikale Bildlauf deaktiviert und die Höhe der scrollView entspricht der Höhe der Unteransicht.
quelle
Die naheliegendste Lösung besteht darin, Änderungen der y-Koordinate in Ihrer Unterklasse zu verbieten.
Dies ist die einzig geeignete Lösung in Situationen, in denen:
quelle
Viele Antworten beinhalten das Setzen
contentOffset
von 0. Ich hatte einen Fall, in dem ich wollte, dass die Ansicht in der scrollView zentriert wird. Das hat den Job für mich gemacht:quelle