0

我开始使用 UIView 动画。并且无法使此类代码正常工作。这是我所拥有的

if(_Language.hidden == true)
{
    [UIView animateWithDuration:1.0
                          delay:0.0
                        options:UIViewAnimationCurveEaseInOut
                     animations:^ {
                        _Language.alpha = 1.0;
                     }
                     completion:^(BOOL finished) {
                         _Language.hidden = false;
                     }];
}
else
{
    [UIView animateWithDuration:1.0
                          delay:0.0
                        options:UIViewAnimationCurveEaseInOut
                     animations:^ {
                         _Language.alpha = 0.0;
                     }
                     completion:^(BOOL finished) {
                         _Language.hidden = true;
                     }];
}

此代码以这种方式工作。隐藏动画按预期工作。但显示动画只等待 1 秒,然后弹出对象而没有任何过渡。谁能告诉我我在这里缺少什么?

4

2 回答 2

9

只有在动画结束后才将属性更改hidden为 true,因此在动画完成之前它不会出现。你应该在动画开始之前做:

if(_Language.hidden == true)
 {
 _Language.hidden = false;
[UIView animateWithDuration:1.0
                      delay:0.0
                    options:UIViewAnimationCurveEaseInOut
                 animations:^ {
                    _Language.alpha = 1.0;  
                 }];
 }
于 2012-11-28T08:16:59.323 回答
5

_Language.hidden的设置为true,因此当它动画时,屏幕上不会出现任何内容。您需要在制作动画之前使其可见。将 hidden 属性设置为 false,然后显示动画。当您将其添加到完成块中时,反向仅适用于隐藏。

_Language.hidden = false;
[UIView animateWithDuration:1.0 ...

并将其从完成块中删除,

completion:^(BOOL finished) {
                     }];
于 2012-11-28T08:16:56.390 回答