Ich mache eine Navigationssteuerungsklasse für Mac OS X.
Ich möchte die aktuelle Ansicht durch eine kCATransitionPush
-Animation ersetzen.
Wie in diesem Beitrag:
Core Animation Tutorial - Wizard Dialog mit Übergängen
Der CATransition
ist wie folgt aufgebaut:
Wenn ich jedoch die Ansichten ersetze, gibt es eine Fade-Animation, die automatisch hinzugefügt wird.
%Vor%Wie kann ich eine Push-Animation ohne Fading machen?
Der beste Weg, um glatte Kernanimationsübergänge zu erhalten, die unabhängig davon funktionieren, ob die Ansicht CA unterstützt oder nicht, ist Folgendes:
NSView -cacheDisplayInRect:toBitmapImageRep
oder eine ähnliche Methode verwenden Ich vermute, dass Sie auf implizite Animationen stoßen - Core Animation animiert automatisch Änderungen der Ebeneneigenschaften, die außerhalb Ihrer eigenen Transaktionen stattfinden.
Es gibt eine gute Zusammenfassung mehrerer Methoden zum Deaktivieren dieser impliziten Animationen in diesen beiden Fragen:
Wie können implizite CALayer-Animationen deaktiviert werden?
Implizite Animationen in deaktivieren - [CALayer setNeedsDisplayInRect:]
... und Sie können mehr über implizite Transaktionen lesen in die Core-Animation-Dokumente
Ich denke, der Übergang vom linken Übergang enthält eine eingebaute Überblendung. Die IOS Push-Übergänge machen das.
Wenn Sie das nicht möchten, müssen Sie möglicherweise einen eigenen Push-Übergang mit Core Animation durchführen. Dies wäre in iOS mit UIView-Animationen einfach. Leider gibt es kein Äquivalent in Mac OS. Ich wünschte, Apple würde zurückkehren und View-Animationen zu Mac OS hinzufügen. Ich werde verwöhnt mit ihnen in iOS, und dann vermisse sie, wenn ich an Mac-Anwendungen arbeiten.
Tags und Links objective-c core-animation macos cocoa