Анимированные кнопки UIB
У меня есть несколько кнопок, которые я хотел бы оживить.
Я посмотрел и попробовал метод animateWithDuration, но, похоже, это для Views, и я не смог заставить свою реализацию работать.
Может ли этот метод работать и для кнопок анимации? если нет, то как это можно сделать?
РЕДАКТИРОВАТЬ У меня есть следующий код
-(void) animate:(UIButton*) b withMonster: (int) monster withState: (int) state andLastState:(int) last_state {
if (state < last_state) {
float duration = 1.0 / 10;
__block int stateTemp = state;
[b animateWithDuration: duration
animations: ^{ [UIImage imageNamed:[NSString stringWithFormat:@"m%d.a000%d.png", monster, state]]; }
completion: ^{ [self animate: A1 withMonster: monster withState: stateTemp++ andLastState: last_state];; }];
}
и я называю это так
[self animate: A1 withMonster: monsterDecider withState: 1 andLastState: 5];
При выполнении этого кода приложение вылетает.
Является ли это правильным для вызова с самим собой в обоих вызовах (сам, будучи ViewController).
Спасибо
1 ответ
Вы можете анимировать кнопки, да. В блоке анимации вам нужно изменить некоторые параметры кнопки, например:
[UIView animateWithDuration:animTime
animations:^{button.frame = newFrame;}];
Глядя на ваш код, вы, вероятно, захотите установить свойство button.imageView.image для нового изображения (ваш код в настоящее время загружает новое изображение, но не устанавливает его для кнопки).
Однако объекты UIImageView фактически поддерживают переключение между несколькими изображениями без необходимости использования методов UIView animateWithduration:....
Вы, вероятно, хотите установить следующие свойства:
button.imageView.animationImages
button.imageView.animationDuration
button.imageView.animationRepeatCount
Тогда позвони
[button.imageView startAnimating];
и UIImageView сделает всю анимацию за вас. См. Документы на UIImageView: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImageView_Class/Reference/Reference.html