6

动画视图很容易:

[UIView animateWithDuration:1.0
                     animations:^{theView.center = newCenter; theView.alpha = 0;}
                     completion:^(BOOL finished){
                         [theView removeFromSuperview];
                     }];

问题是当我将它添加为子视图时,我希望它淡入并且看起来已经在移动。现在它立即出现,然后移动并淡出。

所以,我需要将它的初始 alpha 设置为零,在它移动时快速淡化它,然后淡出它。这可能与 UIView 动画吗?我不能让两个相互竞争的动画块在同一个对象上工作,对吧?

4

2 回答 2

13

您需要做的就是连续应用 2 个动画。像这样的东西::

theView.alpha = 0;
[UIView animateWithDuration:1.0
                 animations:^{
                     theView.center = midCenter;
                     theView.alpha = 1;
                 }
                 completion:^(BOOL finished){
                     [UIView animateWithDuration:1.0
                                      animations:^{
                                          theView.center = endCenter;
                                          theView.alpha = 0;
                                      }
                                      completion:^(BOOL finished){
                                          [theView removeFromSuperview];
                                      }];
                 }];

所以在第一秒它会在移动时出现,然后在下一秒它会淡出

希望这可以帮助

于 2013-02-08T19:27:21.517 回答
2

将初始 alpha=0 放在动画块之外。

theView.alpha = 0;
[UIView animateWithDuration:1.0
                 animations:^{
                     theView.center = newCenter; 
                     theView.alpha = 1;
                 }
                 completion:^(BOOL finished){
                     // Do other things
                 }];
于 2013-02-08T19:24:20.393 回答