CALayer子类未激活属性更改

马杜·拉瓦(Madhur Ra​​wat)

我有一个CALayer带有floatanimAngle属性子类,标记为@dynamic我已经实现的方法actionForKeyinitWithLayerneedsDisplayForKeydrawInContext为子类。的定义actionForKey如下

- (id<CAAction>)actionForKey:(NString *)event {
    if([event isEqualToString:@"animAngle"]) {
        return [self animationForKey:event];
    }
    return [super actionForKey:event];
}

- (CABasicAnimation *)animationForKey:(NSString *)key
{
    NSString *animValue = [[self presentationLayer] valueForKey:key];// Logs as 0
    CABasicAnimation *anim;

    if([key isEqualToString:@"animAngle"]) {
        anim = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
        anim.repeatCount = HUGE_VAL;
        anim.autoreverses = YES;
        //anim.fromValue = [[self presentationLayer] valueForKey:key]; // setting animation value from layer property as in here does not work.
        anim.fromValue = [NSNumber numberWithFloat:0.5f];            // This works
    }
    anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    anim.duration = 0.11;
    return anim;
}

在其他班级:

myCASublayer.animAngle = 0.5f;

以某种方式CABasicAnimation返回的对象将无法正确使用图层的“ animAngle”属性。我在这里可能做错了什么?

戴维·隆恩奎斯特(DavidRönnqvist)

CocoaHeads会议:Rob Napier在“动画自定义图层属性”上很好地介绍了自定义动画。

CALayers讨厌画画;)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章