CATransition Push ohne Fade

8

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:

%Vor%

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?

    
NSAddict 12.01.2013, 13:17
quelle

3 Antworten

5

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:

  1. Erstellen Sie ein Bild der Ansicht, die Sie animieren möchten, indem Sie NSView -cacheDisplayInRect:toBitmapImageRep oder eine ähnliche Methode verwenden
  2. Fügen Sie dieses Bild in eine NSImageView
  3. ein
  4. Lege die Bildansicht zurück, die beim Zurücksetzen der Ebene
  5. keine Probleme verursacht
  6. Fügen Sie die Bildansicht als Unteransicht über der Ansicht hinzu, die Sie versuchen,
  7. zu verschieben
  8. Animiere den Bildansichtsrahmen mit dem Animator-Proxy von NSView
  9. Entfernen Sie die Bildansicht, sobald die Animation abgeschlossen ist
indragie 19.03.2013, 18:22
quelle
1

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

    
lxt 12.01.2013 13:37
quelle
1

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.

    
Duncan C 13.01.2013 01:24
quelle