1

在我的应用程序中,我想给 一个动画UIButtons,就像按钮隐藏时会从屏幕上“掉出”一样。

我尝试了以下代码,但没有给我一个好的结果。

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

7 回答 7

6

您可以设置新位置并在动画后隐藏按钮。

  [UIView animateWithDuration:0.9 animations:^{
        tradeButton.frame = (CGRect){ CGPointMake(51, 150), tradeButton.bounds.size };
    } completion:^(BOOL finished) {
        tradeButton.hidden = YES;
        // etc.
    }];
于 2013-06-26T07:15:45.477 回答
4

使用具有完成块的动画方法并在那里隐藏按钮。目前,您的 hide 方法会立即运行,因此您看不到动画。

于 2013-06-26T07:06:56.347 回答
4
[UIView animateWithDuration:1 animations:^{
        S1Button.frame = CGRectMake(20, 10, 50, 10);
    } completion:^(BOOL finished) {
        [S1Button setHidden:YES];
    }]
于 2013-06-26T07:07:53.330 回答
1
 [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];

  }];    
于 2013-06-26T07:09:01.707 回答
1

试试这个

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;
            }];
于 2013-06-26T07:09:43.207 回答
1

在您的代码中,Button 的 hidden 属性是不可动画的。当此动画块运行时,您的按钮将立即隐藏,但不会淡出/动画。淡出 UIView 的适当方法是将其 alpha 属性从 1.0 设置为 0.0,如下所示:

   [UIView animateWithDuration:2.0
                          delay:0.0
                        options: UIViewAnimationCurveEaseOut
                     animations:^{S1Button.frame = CGRectMake(20, 10, 50, 10);S1buttonA.alpha = 0;}
                     completion:nil];
于 2013-06-26T07:19:36.313 回答
0

试试这个:

您在动画完成之前隐藏按钮,没有动画可见。所以,用这个替换你的代码:

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

break;
于 2013-06-26T07:18:30.363 回答