任何人都可以分辨出差异 willRotateToInterfaceOrientation, willAnimateRotationToInterfaceOrientation, didRotateFromInterfaceOrientation,
答案 0 :(得分:8)
iOS最初通过两个步骤完成所有轮换。在iOS 3.0中,引入了一个新的/更好的一步动画过程。你提到的方法在轮换的不同阶段被调用。具体地,
在任何旋转开始之前,只要视图要旋转(使用任何旋转方法),就会调用 willRotateToInterfaceOrientation:duration:
。此方法将在任何版本的iOS上调用,任何时候执行旋转(在主动显示的视图上)
willAnimateRotationToInterfaceOrientation:duration:
。这只会在iOS 3.0 +上调用。
didRotateFromInterfaceOrientation:
。此方法将在任何版本的iOS上调用,无论何时执行旋转(在主动显示的视图上)。
实际上,在任何现代(3.0+)iOS上,所有三种方法都被发送到主动显示视图的视图控制器。这些方法按列出的顺序调用:
首先 willRotateToInterfaceOrientation:duration:
{{1秒,
willAnimateRotationToInterfaceOrientation:duration:
最后
注意:iOS 5不推荐使用其他旋转通知方法(处理两步动画过程),因此这三个是唯一应该在新项目中使用的方法。
答案 1 :(得分:3)
来自UIViewController Class Reference:
willRotateToInterfaceOrientation:duration:
刚刚发送到视图控制器 在用户界面开始之前 旋转。
willAnimateRotationToInterfaceOrientation:duration:
之前发送到视图控制器 执行一步式用户界面 转动。
didRotateFromInterfaceOrientation:
之后发送到视图控制器 用户界面旋转。
答案 2 :(得分:1)
我认为最重要的区别是当调用方法willRotateToInterfaceOrientation:duration:
时self.view.bounds
没有改变,但调用方法willAnimateRotationToInterfaceOrientation:duration:
时self.view.bounds
已发生变化