有两种方法可以判断
1,程序刚开始运行的时候,不能获取当前方向。给你说几种方式,你试一下: 1. 可以在启动后0.01秒执行初始化的代码,这个时候就可以获取设备方向了。
2. 另外一种方式,借助状态栏的方向:
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
3. 你可以通过获取控件所属controller的界面方向,使得相关控件的方向与其controller的方向是一致的,而无需理会当前的设备方向究竟是什么。控制器的界面方向可由其interfaceOrientation属性获得。 例如:
if (self.interfaceOrientation == UIDeviceOrientationPortrait)
就可以判断程序启动时是不是在protrait方向上了。
if(self.interfaceOrientation== UIDeviceOrientationPortrait ||self.interfaceOrientation== UIDeviceOrientationPortraitUpsideDown)
{//正
else
{//反
}
2,以下这种方法发现在模拟器上测试刚启动app后是无法得到设备方向的。 获取的结果是UIDeviceOrientationUnknown。The value of this property always returns 0 unless orientation notifications have been enabled by calling beginGeneratingDeviceOrientationNotifications. 有的说是只能在真机上才可以。
UIDevice *device = [UIDevicecurrentDevice];
if(device.orientation== UIInterfaceOrientationPortrait || device.orientation== UIInterfaceOrientationPortraitUpsideDown)
{//正
else
{//反
}