HINWEIS: Ich habe meine neue Lösung bei der UPDATE-Antwort unten hinzugefügt.Einblenden/Ausblenden Der Inhalt von UIScrollView wie Mobile Safari funktioniert in der Registerkarte
Ich versuche, die Effekte, die wir in Mobile Safari Registerkarte auf dem iPhone/iPod touch gesehen haben, neu zu erstellen.
Grundsätzlich ist es ein UIScrollView, das 4 wiederverwendbare UIView (wie Ringpuffer) hält und horizontal scrollt. Beim Scrollen wird die Deckkraft des UIView nahtlos mit dem Offset ein- und ausgeblendet.
Derzeit mache ich alle schmutzigen Job in - (void)scrollViewDidScroll:(UIScrollView *)scrollView
. B. das containOffset von UIScrollView abrufen, die Seitenaufteilung bestimmen, das Delta zwischen contentOffset und jeder UIView-Position berechnen und den Alpha-Wert jeder UIView zum Zeitpunkt des Aufrufs von scrollViewDidScroll:
festlegen/festlegen.
Und es funktioniert, Leistung ist in Ordnung, alles läuft reibungslos, aber das einzige Problem ist zu viel Berechnung.
Ich versuchte UIView die beginAnimations:
und commitAnimations:
, aber es ist nutzlos in scrollViewDidScroll:
, da 1) der neuen Alpha-Wert noch von mir selbst berechnen müssen werden, und 2) scrollViewDidScroll: genannt gehalten beim Scrollen, es sinnlos ist hier die Animation zu tun. Gibt es eine Möglichkeit, diesen Teil mit Core Animation neu zu schreiben? Ich muss also nicht selbst den Alpha-Wert jeder UIView berechnen, stattdessen kann ich ganze Arbeiten Core Animation überlassen.
Ich finde es gerade jetzt, und es ist großartig - danke fürs Teilen! Ein Fehler: Das anfängliche Alpha ist nicht für die einzige Offscreen-Ansicht eingestellt. Ich nehme an, ich könnte updateAlpha: explizit nennen, aber vielleicht reicht es aus, am Anfang explizit contentOffset zu setzen. Gedanken? –