posha
posha

Reputation: 901

Animation to Hide UIButton in iOS

In my application i want to give an animation to UIButtons, like the buttons will "fall out" of the screen when they hide.

I tried the following code but it didn't give me a good result.

[UIView animateWithDuration:1.5
                 animations:^{
                    S1Button.frame = CGRectMake(20, 10, 50, 10);
                }];
[S1Button setHidden:YES];
break;

Upvotes: 1

Views: 3438

Answers (7)

DharaParekh
DharaParekh

Reputation: 1730

try this:

you hide the button before your animation completion, the no animation is visible. So, replace your code with this:

[UIView animateWithDuration:1.5 animations:^{
    S1Button.frame = CGRectMake(20, 10, 50, 10);
} completion:^(BOOL finished) {
    [S1Button setHidden:YES];
}];

break;

Upvotes: 0

iPatel
iPatel

Reputation: 47049

In your Code, The hidden property of Button is NOT animatable. When this animation block runs, your button will immediately hidden , but it will not fade/animate. The appropriate way to fade out a UIView is to animate its alpha property from 1.0 to 0.0 like this:

   [UIView animateWithDuration:2.0
                          delay:0.0
                        options: UIViewAnimationCurveEaseOut
                     animations:^{S1Button.frame = CGRectMake(20, 10, 50, 10);S1buttonA.alpha = 0;}
                     completion:nil];

Upvotes: 1

AtWork
AtWork

Reputation: 1293

You can set new position and hide the button after animation.

  [UIView animateWithDuration:0.9 animations:^{
        tradeButton.frame = (CGRect){ CGPointMake(51, 150), tradeButton.bounds.size };
    } completion:^(BOOL finished) {
        tradeButton.hidden = YES;
        // etc.
    }];

Upvotes: 6

Irshad Mansuri
Irshad Mansuri

Reputation: 407

 [UIView animateWithDuration:0.25f
                 animations:^{
                     S1Button.frame = CGRectMake(20, 10, 50, 10);
                }completion:^(BOOL completed){
                     [UIView beginAnimations:nil context:nil];
                     [UIView setAnimationDuration:.3];

                     S1Button.alpha = 1;
                     [UIView commitAnimations];

  }];    

Upvotes: 1

Jitendra
Jitendra

Reputation: 5081

Try this one

To fade out:

         [UIView animateWithDuration:0.3 animations:^{
                button.alpha = 0;
            } completion: ^(BOOL finished) {
                button.hidden = YES;
            }];


        To fade in:


          button.alpha = 0;
            button.hidden = NO;
            [UIView animateWithDuration:0.3 animations:^{
                button.alpha = 1;
            }];

Upvotes: 1

IronMan
IronMan

Reputation: 1505

[UIView animateWithDuration:1 animations:^{
        S1Button.frame = CGRectMake(20, 10, 50, 10);
    } completion:^(BOOL finished) {
        [S1Button setHidden:YES];
    }]

Upvotes: 4

Wain
Wain

Reputation: 119031

Use the animation method which has a completion block and hide the button there. Currently your hide method runs immediately so you don't see the animation.

Upvotes: 4

Related Questions