Endwert einer Rotationsanimation beibehalten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Endwert einer Rotationsanimation beibehalten

    Hallo,

    ich rotiere einen CALayer per CAKeyframeAnimation von 0° nach 180°. Nun soll jedoch nach der Animation diese Perspektive erhalten bleibt und nicht wieder auf 0° zurück springen. Bei einer Bounds- oder Positionanimation recht es aus, unmittelbar vor dem Start der Animation den neuen Wert (Endwert der Animation) zu setzen. Das klappt leider nicht, wenn man CATransform3D verwendet, um den Endwert (verbleibender Rotationswinkel) versucht zu setzen.

    was kann man da tun?
  • der Transform wird sofort ausgeführt! das heißt, erst wird der layer um 180° per Transform gedreht und erst im Anschluss startet die Animation.

    hab auch schon versucht mit animationDidStart /animationDidStop den Transform erst nach beginn der Animation zu starten, in der Hoffnung, dass diese dann ungestört durchlaufen wird, aber hat nicht funktioniert.

    Wenn der Transform per animationDidStop ausgelöst wird, springt der Layer in seine ursprüngliche Position zurück ehe der Tarnsform sein Werk tut. Ist ja im Grunde auch logisch, dass das so ist, aber helfen tut´s mir trotzdem nicht:)
  • versuch es mal so:

    Quellcode

    1. CALayer *theLayer = ...;
    2. CABasicAnimation *theAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
    3. CATransform3D theTransform = theLayer.transform;
    4. theAnimation.fromValue = [NSValue valueWithCATransform3D:theTransform];
    5. theTransform = CATransform3DRotate(theTransform, M_PI, 0.0, 1.0, 0.0);
    6. theAnimation.toValue = [NSValue valueWithCATransform3D:theTransform];
    7. theLayer.transform = theTransform;
    8. theAnimation.duration = 4.0;
    9. [theLayer addAnimation:theAnimation forKey:@"rotation"];
    „Meine Komplikation hatte eine Komplikation.“