I have a few buttons I would like to animate.
I have looked at and tried the animateWithDuration method but that seems to be for Views and I couldnt get my implementation to work.
Can this method work for animating buttons too? if not how could it be done?
EDIT I have the following code
-(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:[NSStr开发者_StackOverflow社区ing stringWithFormat:@"m%d.a000%d.png", monster, state]]; }
completion: ^{ [self animate: A1 withMonster: monster withState: stateTemp++ andLastState: last_state];; }];
}
and I call it like so
[self animate: A1 withMonster: monsterDecider withState: 1 andLastState: 5];
When this code executes the app crashes.
Is it correct to call is with self in both calls(self being ViewController).
Thanks
You can animate buttons, yes. In the animations block you need to change some of the button parameters like this:
[UIView animateWithDuration:animTime
animations:^{button.frame = newFrame;}];
Looking at your code you probably want to set the button.imageView.image property to a new image (your code currently loads a new image but doesn't set it onto the button).
However, UIImageView objects actually support changing between multiple images without needing to use the UIView animateWithduration:... methods.
You probably want to set the following properties:
button.imageView.animationImages
button.imageView.animationDuration
button.imageView.animationRepeatCount
Then call
[button.imageView startAnimating];
and the UIImageView will do all the animation for you. See the docs on UIImageView: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImageView_Class/Reference/Reference.html
精彩评论