【发布时间】:2012-04-08 05:37:28
【问题描述】:
上下文:我正在尝试执行从普通 UIViewController.view 到 UISplitViewController.view 的自定义动画。动画应该从左到右显示。
我设置了self.window.rootViewController = viewController,其中viewController 是一个普通的UIViewController。
一旦用户滑动,就会调用以下代码:
UIView *theWindow = [viewController.view superview];
[viewController.view removeFromSuperview];
[theWindow addSubview:self.splitViewController.view];
CATransition *animation = [CATransition animation];
[animation setDuration:0.5];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromLeft];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[[theWindow layer] addAnimation:animation forKey:@"SwitchToView1"];
当设备处于纵向模式时,一切都很完美。但是,当设备处于横向模式时,过渡动画就像设备仍处于纵向模式一样执行。例如:不是从左边进来,而是从底部进来。两个视图的方向都是完全正确的。只有过渡很奇怪。
【问题讨论】:
-
如果向另一个方向旋转到横向,动画是否从顶部开始?还是无论您以哪种方式进入横向模式,它都是从底部开始的?该常量将动画从图层的左侧带入。不知道是不是图层的frame没有更新,所以图层的左边是旋转后的底部。
-
没错。动画忽略任何方向变化。关于如何确保图层得到更新的任何建议?
-
我有同样的问题 - CALayer 的方向似乎与它的视图不匹配。似乎还有其他一些类似的帖子,但似乎没有一个解决方案对我有用。将图层旋转 90 度当然也会旋转视图,所以这无济于事..
标签: ios xcode ipad animation orientation