所以,我为此搜索了很多,似乎无法找到解决方案。
此代码有效:
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 :(得分:1)
我会在这里引用Apple(再次):
如果要在转换期间更改视图的外观 - 例如,从一个视图翻转到另一个视图 - 然后使用容器视图,UIView的实例,如下所示:
- 开始动画块。
- 在容器视图上设置转场。
- 从容器视图中删除子视图。
- 将新子视图添加到容器视图中。
- 提交动画块。
醇>
所以你可能想用removeFromSuperview
&如果您使用预定义的转换,则addSubView:
而不是交换两个子视图。