UIView 动画隐藏和显示



我开始使用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 秒,然后弹出对象而没有任何过渡。谁能告诉我我在这里错过了什么?

仅在动画结束后才将 hidden 属性更改为 true,因此在动画完成之前不会显示该属性。 您应该在动画开始之前执行此操作:

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

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

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

并将其从完成块中删除,

completion:^(BOOL finished) {
                     }];

最新更新