CAKeyframeAnimation для backgroundColor ... вызывает сбой - PullRequest
1 голос
/ 30 мая 2011

Я перечисляю массив с этим кодом, и он вылетает.Я думаю, это потому, что я неправильно упаковываю цвета, но как мне их передать?

    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 ]

1 голос
/ 30 мая 2011
    iValues = [NSArray arrayWithObjects:
               (id)iButton.backgroundColor.CGColor,
               (id)iButton.color.CGColor,
               (id)iButton.backgroundColor.CGColor,
               nil];
0 голосов
/ 30 мая 2011

Чтобы получить цвет UIButton, вы можете сделать это следующим образом:

[iButton backgroundColor];

вам, вероятно, не нужны эти вещи:

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

...