5

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...

Ahmad F
  • 30,560
  • 17
  • 97
  • 143
  • use imageview.hidden = yes – karthikeyan Jan 30 '17 at 05:33
  • Mr. karthikeyan where i need to write that code.. –  Jan 30 '17 at 05:38
  • write this code in last line self.imageView.hidden = YES; – Jigar Jan 30 '17 at 05:45
  • - (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]; self.imageView.hidden = YES; } –  Jan 30 '17 at 05:46
  • check this http://stackoverflow.com/questions/9283270/access-method-after-uiimageview-animation-finish – karthikeyan Jan 30 '17 at 05:48
  • already i write this code, if i write like this it's not animating..... why? –  Jan 30 '17 at 05:48
  • @Lyankar add your imageview in uiview and than try to hide uiiew with animating – Jigar Jan 30 '17 at 05:49
  • http://stackoverflow.com/questions/9115854/uiview-hide-show-animate – Jigar Jan 30 '17 at 05:49

4 Answers4

11

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...

0yeoj
  • 4,500
  • 3
  • 23
  • 41
  • 1
    That's really a nice way of doing it. (y) – viral Jan 30 '17 at 05:49
  • 0yeoj, can you please send the code how to play multiple audio (MP3) songs in AVPlayerViewController.... –  Jan 30 '17 at 06:05
  • @Lyankar, what do you mean multiple mp3? Playing simultaneously? – 0yeoj Jan 30 '17 at 06:07
  • @Lyankar, ow.. i get it.. you need some customization with that.. you can post another for that one.. don't forget to provide some code you tried so far.. – 0yeoj Jan 30 '17 at 06:19
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/134337/discussion-between-lyankar-and-0yeoj). –  Jan 30 '17 at 06:20
2

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;
    });
}
viral
  • 4,168
  • 5
  • 43
  • 68
  • can you please send the code how to play multiple audio (MP3) songs in AVPlayerViewController.... –  Jan 30 '17 at 06:06
1

You can do it with UIView's hidden property. imageView.hidden = true;

Amit Tandel
  • 883
  • 7
  • 16
1
- (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];
}
Dishant Rajput
  • 1,329
  • 1
  • 10
  • 20