UIView 动画隐藏和显示
Posted
技术标签:
【中文标题】UIView 动画隐藏和显示【英文标题】:UIView animation hide and show 【发布时间】:2012-11-28 08:13:07 【问题描述】:我开始使用 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 秒,然后弹出对象而没有任何过渡。谁能告诉我我在这里缺少什么?
【问题讨论】:
【参考方案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 查看 didload。首先隐藏它。我没有正确获得第一个动画,它会立即显示。之后,一切都按预期工作。想法? 通过将 viewdidload 中的 alpha 设置为 0 使其正常工作。谢谢您的回答!【参考方案2】:您的_Language.hidden
设置为true
,因此当它处于动画状态时,屏幕上不会出现任何内容。您需要在制作动画之前使其可见。将 hidden 属性设置为 false,然后显示动画。反向仅在您将其添加到完成块中时才能隐藏。
_Language.hidden = false;
[UIView animateWithDuration:1.0 ...
并将其从完成块中删除,
completion:^(BOOL finished)
];
【讨论】:
感谢您抽出宝贵时间回答,但我会接受@shannoga 的回答。因为他在 3 秒内更快:) 事实上我快了 10 秒。 :) 您可以通过单击按最旧选项卡排序来验证(接受后不会显示)。无论如何,这很好。很高兴它有帮助。以上是关于UIView 动画隐藏和显示的主要内容,如果未能解决你的问题,请参考以下文章