2 Stimmen

UIScrollView mit Vorschaubildern der linken und rechten Seite

Ich möchte ein scrollview mit Ansichten innerhalb haben, dass ein Benutzer nach links oder rechts streichen und mit ihm interagieren kann. Die Scrollview hat UIViews innerhalb, dass ein Benutzer mit interagieren muss.

scrollview

Ich war in der Lage, die Ansichten hinzuzufügen und es funktioniert gut mit Paging Enabled. Leider scheine ich keine gute Möglichkeit zu finden, Vorschauen anzuzeigen.

Es gibt einen Beitrag in einer UIScrollview Paging Hack die erklärt, wie man damit umgeht. Die Lösung hat drei Probleme:

  • Es funktioniert nur, wenn die Vorschaubilder 1/4 der Breite des mittleren Bildes betragen. Ursprünglich dachte ich, ich hätte eine Formel für die Größe der Vorschaubilder gefunden, aber als sich die Anzahl der Folien änderte, lag ich falsch.
  • Wenn die Breite der Vorschaubilder nicht 1/4 der Breite beträgt, funktioniert das Gleiten, aber das mittlere Dia wird aus der Mitte verschoben.
  • Für die aktuelle Folie ist keine UI-Interaktion aktiviert, es sei denn, es ist die erste Folie (und Teil des sichtbaren Bereichs). Wenn Sie zu anderen Abschnitten gleiten, kann ich keine Schaltflächen verwenden.

Ich habe im Internet viel darüber gesucht, wie das geht, aber keine Lösung gefunden. Vorschläge sind willkommen, auch in Objective C.

UPDATE : Ich habe eine Lösung gefunden, die das tut, was ich hier beschreibe. https://github.com/roland/Carousel/tree/master/Carousel

0 Stimmen

Könnten Sie den Bildlauf-Ansichtsrahmen auf den tatsächlich gewünschten Rahmen setzen, mit aktiviertem Paging, aber mit clipsToBounds=NO, damit der Inhalt über den Paging-Rahmen hinaus angezeigt wird?

0 Stimmen

Ich habe es ausprobiert, und das Problem ist, dass das Dia unmittelbar links oder rechts übersprungen wird, wenn man scrollt. Ich möchte, dass sich die Vorschau nach einem Wischen in die Mitte bewegt, als ob sie einen Schnappschuss anzeigen würde.

1voto

Noah Witherspoon Punkte 56607

Auf der letztjährigen WWDC gab es einen Beispielcode für das Adressbuch - ich glaube, er hieß PhotoBook -, der zeigte, wie man dies erreichen kann. Im Grunde ist dies die Einrichtung, die Sie benötigen:

  • Eine Bildlaufansicht mit einer Breite von (Breite der einzelnen Inhaltsseiten) + (der gewünschte Abstand zwischen den Seiten)
  • Positionierung des Seiteninhalts innerhalb der Bildlaufansicht an X-Positionen von (Seitenindex) * ((Seitenbreite) + (Auffüllbereich)) - 0,5 * (Auffüllbereich)
  • Eine unterklassige Ansicht, die die Bildlaufansicht enthält, mit ihrer -hitTest:withEvent: Methode überschrieben, um immer die darin enthaltene Bildlaufansicht zurückzugeben

0 Stimmen

! Danke! Die ersten beiden Zeilen waren ziemlich genau das, was ich hatte. Der letzte Punkt, withTest war interessant, aber für die Unterklasse von scrollview war es immer die gleichen Koordinaten zurück, und die Rückkehr der aktuellen Instanz machte es nicht die Bewegung zu stoppen. Ich bin derzeit untersuchen, ob setContentOffset ist der Weg zu gehen. Ich kann berechnen, auf welchem Frame-Index man sich befindet, und die Überprüfung, ob die Animation verlangsamt wird, scheint einigermaßen anständig zu sein. Ich werde es auf Github posten, sobald ich fertig bin.

0 Stimmen

Unterklassifizieren Sie nicht die Scroll-Ansicht selbst, sondern eine generische UIView, die die Größe des gesamten sichtbaren Bereichs hat, der scrollbar sein soll, und machen Sie Ihre Scroll-Ansicht zu einer Unteransicht davon. Der Sinn dieses Tricks ist, dass Sie dann die pagingEnabled a YES in der Bildlaufansicht und es wird die Verlangsamung/Zentrierung für Sie übernehmen.

0 Stimmen

Ich will mich nicht aufdrängen. Ich habe versucht, die wwdc-Präsentation aus dem Jahr 2010 zu finden und konnte das, was du beschreibst, nicht finden. Vielleicht gibt es einen Trick, den ich nicht sehe. Allerdings habe ich eine Lösung gefunden, die das tut, was ich wollte github.com/roland/Carousel/tree/master/Carousel . Vielen Dank für Ihre Hilfe.

0voto

Candide Punkte 29756

Ich habe eine Lösung gefunden, die das tut, was ich hier beschreibe. https://github.com/roland/Carousel/tree/master/Carousel

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X