在设备旋转后调用willRotateToInterfaceOrientation

时间:2014-07-24 04:59:32

标签: ios ios7 rotation

我在willRotateToInterfaceOrientation:方法中有一些代码。但是在方向改变后会调用它。

我希望在方向改变之前调用此方法。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
 //some code   
}

任何人都知道为什么会发生这种情况......

1 个答案:

答案 0 :(得分:0)

我有同样的问题,但找到了解决办法。刚开始收听设备定位事件:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver: self
                                         selector: @selector( detectOrientation )
                                             name: UIDeviceOrientationDidChangeNotification
                                           object: nil];

您的处理程序(上例中的detectOrientation)将在-willRotateToInterfaceOrientation:toInterfaceOrientationduration:方法之前调用,因此也会在以新方向呈现屏幕之前调用

请注意,对beginGeneratingDeviceOrientationNotifications的每次通话都必须与对endGeneratingDeviceOrientationNotificationsas noted in the docs)的通话相匹配。因此,如果您在-viewDidLoad拨打第一个电话,请不要忘记在dealloc拨打后者。

另一件需要注意的事情是,此方法会打开加速度计硬件,因此您的应用程序可能会消耗更多电池,但仍然有效(即,在您致电endGeneratingDeviceOrientationNotifications之前)。