2011-04-15 40 views
0

我有两个我想淡入淡出的视图。我尝试了下面的代码,但它似乎不工作,转换只发生一次。任何人都可以告诉我正确的方法来完成我想要做的事情吗?为什么这两个UIViews不会使用我的动画淡入淡出?

vView1.alpha = 0.0; 
vView2.alpha = 1.0; 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.55]; 
[UIView setAnimationRepeatCount:0]; 
vView1.alpha = (vView1 == 0.0) ? 1.0 : 0.0; 
vView2.alpha = (vView2 == 0.0) ? 1.0 : 0.0; 
[UIView commitAnimations]; 

我在viewWillAppear中设置它,以防万一。

从Apple文件:

+0

来自Apple Doc的文本是指UIImageView,它似乎不使用。在UIView中,它讲述了repeatCount:“如果指定值0,则动画将执行一次而不重复。” – Olof 2011-04-15 15:03:52

回答

1

UIImageView类也有一个animationRepeatCount属性,当设置为0表示“无限重复”。当设置为0时,UIView类的属性表示“重复一次”。

您正在使用UIView动画。

如果您想无限期地重复此动画,您可以尝试设置选择器以在动画完成时使用setAnimationDidStopSelector:执行,该选择器只是简单地调用您的函数来执行动画。请记住还要拨打setAnimationDelegate:,值为self,以便您的选择器实际被调用。

+0

啊,是的,我的错误,我搜索了文档,并没有意识到它是我在看的UIImageView ...呃!我会尝试你的建议,听起来不错。感谢您的回应。 – LilMoke 2011-04-15 15:09:55

0

从Apple文档:

repeatCount 次动画的数量重复。该值可以是一个分数。如果指定值0,则动画执行一次而不重复。

这就是为什么你只看到你的动画一次。

+0

我编辑了我的帖子,因为在Apple Doc中它说:“默认值是0,它指定无限地重复动画。”我把它设置为0,所以它应该无限重复,是正确的? – LilMoke 2011-04-15 14:47:31

0

据我了解你的问题,你想vView1出现,然后再次消失。然后将repeatCount设置为1应该可以工作。而离开了if语句,像这样:

vView1.alpha = 0.0; 
vView2.alpha = 1.0; 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.55]; 
[UIView setAnimationRepeatCount:1]; 
vView1.alpha = 1.0; 
vView2.alpha = 0.0; 
[UIView commitAnimations]; 
+0

几乎,我想vView1出现,vView2消失,然后vView1消失,vView2出现,我希望这个重复永远。所以,先是1,然后是2,然后是1,然后是2,然后是1,依此类推......有意义吗? – LilMoke 2011-04-15 15:06:38