iOS有关屏幕的方法大全

在iOS应用开发过程中,经常会遇到设置屏幕方向,或者根据屏幕方向改变界面的时候,所以现在就来说一下屏幕方向的那些事情。

关于方向,经常会遇到以下的两个对象:

UIViewController 实例通过实现可选的shouldAutorotateToInterfaceOrientation:方法决定是否响应iPhone方向。此方法根据你是否需要支持自动旋转到某个给定方向,反悔YES或NO。要收允许自动旋转到所有可能的方向,只需要返回YES。

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

    return  YES;

}


1.UIDeviceOrientation(机器设备的方向)

==================================

    UIDeviceOrientationUnknown //未知方向

    UIDeviceOrientationPortrait, //设备直立,home按钮在下

    UIDeviceOrientationPortraitUpsideDown,  //设备直立,home按钮在上

    UIDeviceOrientationLandscapeLeft,       //设备横置,home按钮在右

    UIDeviceOrientationLandscapeRight,      //设备横置, home按钮在左

    UIDeviceOrientationFaceUp,              //设备平放,屏幕朝上

    UIDeviceOrientationFaceDown             //设备平放,屏幕朝下

==================================

2.UIInterfaceOrientation(界面的方向,iOS6之后可以去看UIInterfaceOrientationMask

==================================

    UIInterfaceOrientationPortrait //竖向,home按钮在下

    UIInterfaceOrientationPortraitUpsideDown //竖向,home按钮在上

    UIInterfaceOrientationLandscapeLeft //横向,home按钮在左

    UIInterfaceOrientationLandscapeRight //横向,home按钮在右

==================================

界面的开发主要使用UIInterfaceOrientation

一.获取当前界面方向

二.界面方向改变时,会调用的方法

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {}//视图旋转之前自动调用

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {}//旋转方向发生改变时自动调用

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {}//视图旋转完成之后自动调用

三.设置界面支持的方向

1.全局设置

1.1工程设置(XCode5为例)

Targets->General->DeploymentInfo->Device Orientation进行设置

1.2在AppDelegate.m中设置(iOS6之后)

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{

    return UIInterfaceOrientationMaskPortrait;

}


2.一般情况下设置单个界面

iOS6之后:

-(BOOL)shouldAutorotate{

    return YES;

}//是否支持旋转

-(NSUInteger)supportedInterfaceOrientations{

    return UIInterfaceOrientationMaskLandscapeRight;

}//支持的方向

iOS6之前:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{

    return toInterfaceOrientation == UIInterfaceOrientationLandscapeRight;

}


3.特例

引用了UINavigationController,需要改变的视图的是UINavigationController的RootViewController

那么需要新建一个UINavigationController的子类(当然要设置改变的视图是该子类的RootViewController),在这个子类里面添加下面的方法

- (BOOL)shouldAutorotate    
{    
    return self.topViewController.shouldAutorotate;    
}    
    
- (NSUInteger)supportedInterfaceOrientations    
{    
    return self.topViewController.supportedInterfaceOrientations;    
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值