2012-12-04 10 views
5

Ich versuche horizontale Parallaxe in einer Paging-Scroll-Ansicht zu implementieren, die dafür sorgt, dass eine Ansicht in x-Richtung schneller vorkommt, aber an derselben Stelle "landet" (zB 0,0)). Hier ist meine allgemeine Setup/Ansichtshierarchie:Horizontale Parallax Scrolling UIScrollView iOS

  • (transparent scroller, das fängt/geht durch Scroll Ereignisse)
  • (Objekt-Overlay, das ich will 1.2x Tempo in der x Richtung bewegen, aber doesn ‚t übertreffen, es ist‚Landeplatz‘)
  • (ein weiteres Overlay, das ich in einem 1,0x Tempo in der x Richtung bewegen wollen)

ich weiß, es hat etwas mit Veränderung der content~~POS=TRUNC zu tun hat und ich habe mein dele Tore alle Setup, so dass sie alle mit dem 1x Tempo in die gleiche Richtung bewegen können ... irgendwelche Hinweise auf die Lösung?

Antwort

3

Wenn Sie Ihre aktuelle Konfiguration beibehalten möchten, müssen Sie nur die Delegate-Methode -(void)scrollViewDidScroll:(UIScrollView *)scroller mit Ihrem Scroller verwenden, der die Scroll-Ereignisse verfolgt. Bei dieser Methode verfolgen Sie den Offset des Inhalts und verwenden dann Ihre Geschwindigkeitsmultiplikatoren, um Ihre anderen Ansichten so zu verschieben, wie Sie es möchten.

Allerdings können Sie dies einfach mit nur 2 scrollviews tun, und wenn man bewegt, verfolgen Sie seine contentOffset in der gleichen Delegiertenmethode -(void)scrollViewDidScroll:(UIScrollView *)scroller und verschieben Sie die andere entsprechend.

Wenn darüber hinaus die beiden scrollviews unterschiedlicher Größe sind, ein natürlicher Parallaxe-Effekt ist unglaublich einfach, die contentOffset in dem Verfahren -(void)scrollViewDidScroll:(UIScrollView *)scroller Delegaten Verfolgung zu erreichen und dann den Wert mit und die Scroll der contentSize einen Prozentsatz, wie weit die Scrollview zu bekommen verschoben und dann einfach die contentOffset der sekundären scrollview um diesen Prozentsatz von contentSize scrollen.

Lassen Sie mich wissen, wenn Sie weitere Erläuterungen benötigen.

+0

Wie bekomme ich die sekundäre Ansicht jedes Mal an die gleiche Stelle? Sollte die contentSize beider Scroller gleich sein? Die App ist Instago im App Store, ich möchte die farbigen Kästchen in der Diashow auf der Startseite zeigen, die sich nach der Berührung mit einer anderen Rate bewegen. Ich brauche die Schichten, um sich mit unterschiedlichen Geschwindigkeiten zu bewegen, und ich bin mir nicht sicher, wie das Verschieben von Ebenen als Prozentsatz der anderen dazu beitragen würde, diesen Effekt zu erzielen. – nmock

+0

Wenn Sie eine App herunterladen möchten, die den Effekt hat, über den ich rede, besuchen Sie https://itunes.apple.com/us/app/american-revolution-interactive/id489614145?mt=8 (kostenlos). In dieser App haben der Hintergrund und die Zeitleiste (Vordergrund) unterschiedliche Breiten. So bewegt sich jeder der gleiche Prozentsatz noch 10% des Vordergrunds mehr Pixel als 10% des Hintergrunds, so dass der Vordergrund schneller zu bewegen scheint. Wenn du die selbe contentSize behalten willst, kannst du immer noch einen schneller wählen, aber dann muss derjenige, der sich schneller bewegt, aufhören, sich zu bewegen, bevor der langsamere bewegt wird. –

+0

Funktioniert das für Sie? –