判断ipad横竖屏的方法 ----- 持续改进中 -----

本文详细介绍了iOS应用中如何在willRotateToInterfaceOrientation:duration:方法中存储设备方向,通过直接获取设备方向的方法,以及通过屏幕尺寸判断横竖屏的方法,实现了应用在横竖屏切换时的自适应布局。同时提供了根据屏幕方向直接设置视图位置的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最有效的方法是:

在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;


}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值