2010-06-11 67 views
1

所以,我已经搜索了很多这个,似乎无法找到解决方案。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工作,因为如果我从动画块它起到预期中删除。

任何人都有任何洞察力,为什么这个过渡不会运行?我需要导入的东西?

+0

“context”参数供动画回调(setAnimationDelegate/setAnimationWillStartSelector/setAnimationDidStopSelector)使用。你不需要它。将其设置为NULL。 – 2010-06-11 20:23:13

回答

1

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

如果你想有一个过渡例如在改变视图的外观,从一个视图翻转到另一台则使用容器视图, UIView的一个实例,如下所示:

  1. 开始一个动画块。
  2. 设置容器视图上的转换。
  3. 从容器视图中删除子视图。
  4. 将新的子视图添加到容器视图。
  5. 提交动画块。

那么你可能想使用removeFromSuperview & addSubView:,而不是如果你使用预定义的过渡交换两个子视图。

+0

是的,这是我遵循的模式。我从删除和添加中获得相同的结果,而不是交换。 – derrickp 2010-06-14 15:31:21