backgroundColor的CAKeyframeAnimation ...导致崩溃

时间:2011-05-30 16:46:23

标签: core-animation background-color cakeyframeanimation

我使用此代码枚举一个数组,它崩溃了。我认为这是因为我错误地包裹了颜色,但我应该如何传递它们?

    CAKeyframeAnimation *iAnimation = [CAKeyframeAnimation animationWithKeyPath:@"backgroundColor"];
    NSArray *iTimes;
    NSArray *iValues;
    NSInteger iTag = iButton.tag;

    iTimes = [NSArray arrayWithObjects:
              [NSNumber numberWithFloat:(iTimeBlock * iTag)],
              [NSNumber numberWithFloat:(iTimeBlock * iTag + 1)],
              [NSNumber numberWithFloat:iTimeBlock * (iTag + 2)], nil];

    iValues = [NSArray arrayWithObjects:
               iButton.backgroundColor,
               iButton.color, // my subclass has this property
                       iButton.backgroundColor, nil];

    [iAnimation setKeyTimes:iTimes];
    [iAnimation setValues:iValues];
    [iAnimation setDuration:21.0];
    [iButton.layer addAnimation:iAnimation
                         forKey:@"FlashColor"];

2 个答案:

答案 0 :(得分:1)

    iValues = [NSArray arrayWithObjects:
               (id)iButton.backgroundColor.CGColor,
               (id)iButton.color.CGColor,
               (id)iButton.backgroundColor.CGColor,
               nil];

答案 1 :(得分:0)

要获得UIButton的颜色,您可以这样做:

[iButton backgroundColor];

你可能不需要这些东西:

  

[NSValue   valueWithBytes:iButton.backgroundColor                                 objCType:@encode(的UIColor)]