Ich habe ein Menü, das eine CALayer ist, die über den Bildschirm zu einem bestimmten Punkt gleiten wird. Ich möchte den Effekt, wo das Menü geht ein wenig hinter dem Punkt, dann ein wenig vor dem Punkt, und dann landen auf den Punkt. Ich kann das Menü verschieben, indem ich eine Transformation anwende, aber ich hatte gehofft, diesen Sprung-Effekt zum Funktionieren zu bringen. Ich habe mich mit CAKeyframeAnimation beschäftigt, aber ich habe Probleme, ein Beispiel/Tutorial zu finden. Ich habe im CA-Programmierhandbuch nachgeschaut, aber nicht wirklich etwas gefunden. Jeder Link oder jede Hilfe wäre großartig. Danke!
Antwort
Zu viele Anzeigen?I freigegeben einige Codes das genau das tut, wonach Sie suchen. Im Grunde müssen Sie Ihre eigenen CGPathRef
mit allen Punkten, die die Ebene treffen soll, und verwenden Sie diesen Pfad für die path
Attribut des CAKeyframeAnimation
. Der Code wird etwa so aussehen:
CGPoint path[3] = {
FTAnimationOutOfViewCenterPoint(enclosingView.bounds, view.frame, view.center, direction),
[self overshootPointFor:view.center withDirection:direction threshold:(overshootThreshold_ * 1.15)],
view.center
};
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
CGMutablePathRef thePath = CGPathCreateMutable();
CGPathAddLines(thePath, NULL, path, 3);
animation.path = thePath;
CGPathRelease(thePath);
Die gesamte Methode ist aquí .