接口方向委托方法之间有什么区别

时间:2010-03-26 05:16:16

标签: iphone

任何人都可以分辨出差异 willRotateToInterfaceOrientation, willAnimateRotationToInterfaceOrientation, didRotateFromInterfaceOrientation,

3 个答案:

答案 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已发生变化