任何人都知道怎么做?
我想到了:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
}
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration {
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
}
- (void)willAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
}
- (void)didAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
}
- (void)willAnimateSecondHalfOfRotationFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration {
}
可能会阻止设备旋转(覆盖我的UIViewController的所有旋转方法而不调用超类)但我担心它不是实际执行旋转的UIViewController。
我的UIViewController在UINavigationController中。
有人有什么想法吗?
干杯, 尼克。
答案 0 :(得分:20)
您可以注册通知UIDeviceOrientationDidChangeNotification
(来自UIDevice.h
),然后当您关心方向更改时,请调用此方法:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
如果您不再关心方向更改,请调用此方法:
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
通知将在适用时发送,您可以查看[UIDevice currentDevice].orientation
以了解当前的方向。
答案 1 :(得分:4)
另一方面,在2.x中旋转时,应该调用shouldAutoRotateToInterfaceOrientation,但在3.0中,它的一致性要低得多。另一篇文章中提到的通知是可靠的轮换指示的方法。
答案 2 :(得分:1)
您正在从YES
返回shouldAutorotateToInterfaceOrientation:
,我怀疑您不应该这样做。这是您需要实施的唯一方法,以防止设备旋转。
至于获取设备的当前方向,您可以使用[[UIDevice currentDevice] orientation]
。