UIView动画不会运行转换

时间:2010-06-11 08:21:16

标签: iphone objective-c cocoa-touch animation uiview

所以,我为此搜索了很多,似乎无法找到解决方案。

此代码有效:

CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationDuration:5];
[c setCenter:CGPointMake(200, 200)];
[UIView commitAnimations];

此代码不会:

CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:c cache:YES];
[UIView setAnimationDuration:5];
[c exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
[UIView commitAnimations];

我知道对exchangeSubViewAtIndex的调用是有效的,因为如果我从动画块中删除它,它会按预期运行。

任何人都知道为什么这种过渡不会发生?我需要导入什么东西?

1 个答案:

答案 0 :(得分:1)

我会在这里引用Apple(再次):

  

如果要在转换期间更改视图的外观 - 例如,从一个视图翻转到另一个视图 - 然后使用容器视图,UIView的实例,如下所示:

     
      
  1. 开始动画块。
  2.   
  3. 在容器视图上设置转场。
  4.   
  5. 从容器视图中删除子视图。
  6.   
  7. 将新子视图添加到容器视图中。
  8.   
  9. 提交动画块。
  10.   

所以你可能想用removeFromSuperview&如果您使用预定义的转换,则addSubView:而不是交换两个子视图。