#core-animation #background-color #cakeyframeanimation
#основная анимация #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"];
Ответ №1:
iValues = [NSArray arrayWithObjects:
(id)iButton.backgroundColor.CGColor,
(id)iButton.color.CGColor,
(id)iButton.backgroundColor.CGColor,
nil];
Ответ №2:
Чтобы получить цвет UIButton, вы можете сделать вот так :
[iButton backgroundColor];
вам, вероятно, это не нужно :
[NSValue valueWithBytes:iButton.backgroundColor objCType:@encode (UIColor)],
Комментарии:
1. получение объекта uicolor не является проблемой, я указал, передав объект так, как вы описываете. (отредактировано, чтобы показать первый метод)
2. У вас есть какие-нибудь красные ошибки? Может быть, попробуйте это: [NSValue valueWithBytes:[iButton backgroundColor] objCType:@encode (UIColor)]