CABasicAnimation Skalierung ist nicht persistent

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

  • CABasicAnimation Skalierung ist nicht persistent

    Hi,

    wollte gerade eine CABasicAnimation nutzen (mit dem Key @"transform.scale") um ein paar CAShapeLayers auf doppelte Größe zu skalieren.

    Quellcode

    1. CABasicAnimation* scale = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    2. scale.duration = 2.0;
    3. scale.repeatCount = 1.0;
    4. scale.fromValue = [NSNumber numberWithFloat:1.0f];
    5. scale.toValue = [NSNumber numberWithFloat:2.0f];
    6. scale.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    7. [element0 addAnimation:scale forKey:@"scale"];
    8. [element1 addAnimation:scale forKey:@"scale"];
    9. [element2 addAnimation:scale forKey:@"scale"];
    10. [element3 addAnimation:scale forKey:@"scale"];
    11. [element4 addAnimation:scale forKey:@"scale"];
    12. [element5 addAnimation:scale forKey:@"scale"];
    13. [element6 addAnimation:scale forKey:@"scale"];
    Alles anzeigen


    Klappt an sich super, aber wenn die Animation fertig ist, werden die Elemente wieder auf ihre Standardgröße gebracht.
    Wie kann man die neue Größe persistieren ?

    Vielen Dank im voraus :thumbsup:
    Check out my Apps:

    PinguFlap and writtenWatch
  • CodingPhantom schrieb:

    Hab grad das Problem ausfindig gemacht: Es fehlen noch zwei propertys, damit es skaliert bleibt.

    Diese Lösung ist ziemlich ungünstig, und erzeugt ein ähnliches Sicherheitsgefühl wie eine gespannte Mausefalle mit einem Damoklesschwert darüber.

    Du solltest die Werte Deiner Layer auf den Endwert setzen (siehe beispielsweise hier), und in der Animation nur fromValue. Basic-Animations kannst Du Dir häufig auch sparen.
    „Meine Komplikation hatte eine Komplikation.“