Reputation:
I have image view, if click button talking tom cat will play with animationRepeatCount:2, after this, I want to hide image view. How to hide that image view?
- (IBAction)catBlinkButton:(UIButton *)sender {
self.imageView.hidden = NO;
self.imageView.animationDuration = 2;
self.imageView.animationRepeatCount = 2;
self.imageView.animationImages = [[NSArray alloc]initWithObjects:
[UIImage imageNamed:@"cat_blink0000.png"],
[UIImage imageNamed:@"cat_blink0001.png"],
[UIImage imageNamed:@"cat_blink0002.png"],
nil];
[self.imageView startAnimating];
}
This is my code...
Upvotes: 6
Views: 5870
Reputation: 4550
You can simply use CATransaction
like:
self.imageView.hidden = NO;
[CATransaction begin];
[CATransaction setCompletionBlock:^{
self.imageView.hidden = YES;
}];
self.imageView.animationDuration = 2;
self.imageView.animationRepeatCount = 2;
self.imageView.animationImages = [[NSArray alloc]initWithObjects:
[UIImage imageNamed:@"cat_blink0000.png"],
[UIImage imageNamed:@"cat_blink0001.png"],
[UIImage imageNamed:@"cat_blink0002.png"],
nil];
[self.imageView startAnimating];
[CATransaction commit];
CATransaction
will dynamically wait for the animation to finish...
Upvotes: 11
Reputation: 4208
You can execute the code after slate on main thread.
- (IBAction)catBlinkButton:(UIButton *)sender {
self.imageView.hidden = NO;
self.imageView.animationDuration = 2;
self.imageView.animationRepeatCount = 2;
self.imageView.animationImages = [[NSArray alloc]initWithObjects:
[UIImage imageNamed:@"cat_blink0000.png"],
[UIImage imageNamed:@"cat_blink0001.png"],
[UIImage imageNamed:@"cat_blink0002.png"],
nil];
[self.imageView startAnimating];
// after 2 seconds.
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
// hide imageview
self.imageView.hidden = YES;
});
}
Upvotes: 2
Reputation: 1357
- (IBAction)catBlinkButton:(UIButton *)sender {
self.imageView.hidden = NO;
self.imageView.animationDuration = 2;
self.imageView.animationRepeatCount = 2;
self.imageView.animationImages = [[NSArray alloc]initWithObjects:
[UIImage imageNamed:@"cat_blink0000.png"],
[UIImage imageNamed:@"cat_blink0001.png"],
[UIImage imageNamed:@"cat_blink0002.png"],
nil];
[self.imageView startAnimating];
}
Upvotes: 1
Reputation: 883
You can do it with UIView's hidden property. imageView.hidden = true;
Upvotes: 1