最有效的方法是:
在willRotateToInterfaceOrientation:duration:
方法中将方向存储起来:
DrviceOrientation = toInterfaceOrientation;
然后在别的方法中使用
方法一:
直接获取设备的方法:self.interfaceOrientation
方法二:
通过下面的方法:
UIDeviceOrientation DO = [[UIDevice currentDevice]orientation];
、、、、、、、、、、、方法1、2当在模拟器中运行时,刚开始获得的设备方向为UnKnow、、、、、、、、、、、、、、、、、
方法三
[[UIScreenmainScreen] applicationFrame].size.height
[[UIScreenmainScreen] applicationFrame].size.width
可以用来获取当前屏幕的尺寸,高和宽。由于系统的状态条占高20且总是在屏幕上方,它使得上面两个值在横竖屏的时候有变化,因此可用来判断当前是横屏还是竖屏。
简单的说竖屏时,height为1004,width为768。
横屏时,height为1024,width为748。
当然 ,前提是你没有把系统的状态栏去掉.它可以用在任何方法内作为判断条件.
应用示例如下:
if (loadingview ==nil) {
loadingview = [[UIViewalloc] initWithFrame:CGRectMake(284, 402, 200, 200)];
if ([[UIScreenmainScreen] applicationFrame].size.height==1024) {
loadingview.frame=CGRectMake(412, 264, 200, 200);//此时为横屏
}
[loadingviewsetBackgroundColor:[UIColorclearColor]];
//创建loadingview的时候根据当前横竖屏设定位置。
方法四 在论坛里已经有人发过了 呵呵
//下面则是直接以屏幕方向判断
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration {
switch (interfaceOrientation) {
caseUIInterfaceOrientationPortrait:
//home健在下
loadingview.frame=CGRectMake(284, 402, 200, 200);
[self.viewaddSubview:loadingview];
break;
caseUIInterfaceOrientationPortraitUpsideDown:
//home健在上
loadingview.frame=CGRectMake(284, 402, 200, 200);
[self.viewaddSubview:loadingview];
break;
caseUIInterfaceOrientationLandscapeLeft:
//home健在左
loadingview.frame=CGRectMake(412, 264, 200, 200);
[self.viewaddSubview:loadingview];
break;
caseUIInterfaceOrientationLandscapeRight:
//home健在右
loadingview.frame=CGRectMake(412, 264, 200, 200);
[self.viewaddSubview:loadingview];
break;
default:
break;
}
}