2011-05-09 154 views
4

我有一个子视图,我想在隐藏按钮和隐藏按钮之间进行切换。我如何淡入子视图并淡出它?目前它只是立即出现,并在切换按钮时立即消失。如何隐藏UI元素

我想知道什么是最简单的方法来做这个动画。 感谢

回答

6

在iOS 4.0+上Apple建议您使用基于块的新动画方法。利用这些,代码会是这个样子:

[UIView animateWithDuration:2.0 
animations:^{myView.alpha = 0.0;}]; 

您设置动画的块往里走的特性(^{...}部分)。块有点像函数,所以如果你想动画多个属性,你可以在其中放入多行代码。例如:

[UIView animateWithDuration:0.2 
animations:^{ 
    view.alpha = 0.0; 
    view.backgroundColor = [UIColor redColor]; 
}]; 

如果您需要在动画完成后要执行的操作,使用+animateWithDuration:animations:completion:方法(也使用块),例如:

[UIView animateWithDuration:0.2 
animations:^{view.alpha = 0.0;} 
completion:^(BOOL finished){ [view removeFromSuperview]; }]; 

欲了解更多信息,请查看UIView Class Reference'动画'部分和'带块动画视图'部分。

2

这是旧的4.0版本之前的方式:

http://objcolumnist.com/2009/07/18/simple-uiview-based-animations-on-the-iphone/

...其中有在概念简单,易于实现的优点。

float alpha = 1.0; // or 0.0 if it's already visible and you want to fade out 
[UIView beginAnimations:@"" context:NULL]; 
[UIView setAnimationDuration:2.0]; // seconds, not ms. guess how i know? 
[mySubView setAlpha:alpha]; 
[UIView commitAnimations]; 
+0

这很好,但有没有办法控制动画的速度?目前它仍然有点快。谢谢 – Codier 2011-05-09 23:47:34

+1

调整'setAnimationDuration'浮点值来扩展/缩短动画'[UIView setAnimationDuration:2.0f];' – dredful 2011-05-10 00:02:42

+0

谢谢,'dredful'。我觉得那里缺少一些东西。 :) – MusiGenesis 2011-05-10 00:51:30