我希望我的iPhone应用程序全局运行,就好像只允许UIInterfaceOrientationPortrait一样。 但与此同时,我希望它能够了解物理方向,以便以特定方式作出反应,仅在显示器的有限区域内。 我怎么能得到这个?
我使用UIViewController的self.interfaceOrientation iVar做了一些测试,但这似乎不起作用,因为这个变量不会改变。
答案 0 :(得分:1)
首先,做[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]
。然后注册UIDeviceOrientationDidChangeNotification
。收到通知后,请检查[UIDevice currentDevice].orientation
以了解设备的物理方向。
您一定要阅读这些API的文档,因为它包含一些重要的警告。
另请注意,设备方向以UIDeviceOrientation
的形式返回,与UIInterfaceOrientation
不同。请记住UIInterfaceOrientation
文档中的这些信息:
您可以在
statusBarOrientation
属性和setStatusBarOrientation:animated:
方法中使用这些常量。请注意,UIDeviceOrientationLandscapeRight
已分配给UIInterfaceOrientationLandscapeLeft
,而UIDeviceOrientationLandscapeLeft
已分配给UIInterfaceOrientationLandscapeRight
;原因是旋转设备需要沿相反方向旋转内容。