如何在单独的Portrait和Landscape UIViewControllers之间平滑过渡?

时间:2010-07-12 07:47:50

标签: iphone uiviewcontroller orientation

我正在使用Apple的示例代码来创建单独的纵向和横向视图控制器(在orientationChanged方法中显示/解除模态视图控制器)。但是,它会产生许多问题:

  1. 状态栏不会旋转。如果我手动设置StatusBarOrientation,我会得到非常奇怪的行为。
  2. 过渡非常突然;我更喜欢 传统的流畅动画, 特别是因为......
  3. 90%的人 查看更改,但有两个 应该看起来完全正确的图像 相同(相同的大小,相同的位置,相同 方向)在两个景观中 和肖像模式。
  4. 我的目标是轮换过渡更像股票应用程序中的旋转过渡。我怎样才能做到这一点?

    感谢。

1 个答案:

答案 0 :(得分:0)

你可以使用核心动画来做到这一点。淡出所有未出现在另一个视图中的元素(通过设置不透明度的动画)。移动并旋转每个视图中相同的对象。最后在第二个视图中淡入新对象。它可能会变得相当复杂,具体取决于视图的复杂程度。看一下these methods,找出实现动画的位置:

– willRotateToInterfaceOrientation:duration:
– willAnimateRotationToInterfaceOrientation:duration:
– willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:
– didAnimateFirstHalfOfRotationToInterfaceOrientation:
– willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration: