iOS6的旋屏控制技巧

原创 2012年10月01日 11:06:09

iOS6的旋屏控制技巧


在iOS5.1 和 之前的版本中, 我们通常利用 shouldAutorotateToInterfaceOrientation: 来单独控制某个UIViewController的旋屏方向支持,比如:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}


但是在iOS6中,这个方法被废弃了,使用无效。

shouldAutorotateToInterfaceOrientation:

Returns a Boolean value indicating whether the view controller supports the specified orientation. (Deprecated in iOS 6.0. Override the supportedInterfaceOrientations andpreferredInterfaceOrientationForPresentation methods instead.)


实践后会发现,通过supportedInterfaceOrientations的单独控制是无法锁定屏幕的。

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}


多次实验后总结出控制屏幕旋转支持方向的方法如下:

子类化UINavigationController,增加方法

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

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

并且设定其为程序入口,或指定为 self.window.rootViewController

随后添加自己的view controller,如果想禁止某个view controller的旋屏:(支持全部版本的控制)

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

-(BOOL)shouldAutorotate
{
    return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}



如果想又开启某个view controller的全部方向旋屏支持:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

-(BOOL)shouldAutorotate
{
    return YES;
}


从而实现了对每个view controller的单独控制。


顺便提一下,如果整个应用所有view controller都不支持旋屏,那么干脆:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
     return UIInterfaceOrientationMaskPortrait;
}



下次再说说iOS6的内存控制吧


版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS7到iOS8 一个通用的横竖屏幕切换总结

以下内容是在IOS7和IOS8系统验证得到的结论 1.首先,在iOS8之前的[UIScreenmainScreen].bounds和 [UIScreen mainScreen].applicat...
  • ReturningProdigal
  • ReturningProdigal
  • 2016年07月05日 13:48
  • 2166

ios开发 旋转屏幕supportedInterfaceOrientationsForWindow函数概要

6.0以上旋转屏幕概要: - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsF...
  • mmvery12
  • mmvery12
  • 2014年12月24日 10:43
  • 862

- (NSUInteger)supportedInterfaceOrientations 屏幕旋转方向选择

方法名称:supportedInterfaceOrientations 作用:返回一个ViewController支持的方向,也就是说你返回这个方向是你屏幕启动后就保持的方向,如让他默认横屏或者竖屏...
  • Louis__2014
  • Louis__2014
  • 2014年06月21日 09:02
  • 3884

实现supportedInterfaceOrientations方法来控制当前控制器支持哪些方向

#pragma mark - 实现这个方法来控制屏幕方向 /**  *  控制当前控制器支持哪些方向  *  返回值是UIInterfaceOrientationMask*  */ - (N...
  • a804609572
  • a804609572
  • 2015年02月04日 14:14
  • 695

shouldAutorotateToInterfaceOrientation 不触发或者不执行的问题 转载

引用地址:http://blog.csdn.net/chenshizero/article/details/6200262今天遇到一个很郁闷的问题:新做的ipad程序中,界面居然在未作任何配置的情况下...
  • s445320
  • s445320
  • 2015年12月14日 10:15
  • 621

statusBarOrientation设备状态判断--- 横竖屏设置

在一般的视频类APP播放的时候都会支持横屏,这样做的好处就是便于观看。你的项目中支持横屏吗?我们一起了解一下,在iOS9中横竖屏设置的处理方法吧! 支持横竖屏配置 在iOS6以后,如果APP需要支持横...
  • wujakf
  • wujakf
  • 2017年03月22日 17:08
  • 777

iOS6以上屏幕旋转详解

屏幕旋转的研究理由: 因为本人从事视频类的iOS开发工作,经常项目中经常会遇到需要在不同的页面对屏幕方向进行控制,例如正常的列表页面都只支持竖屏不能旋转,而播放页面需要能够控制旋转 : 手动点击全屏...
  • u013756604
  • u013756604
  • 2017年10月24日 18:20
  • 118

完美解决 iOS 中只旋转自己想要旋转的屏幕

1、屏蔽AppDelegate下面的屏幕旋转方法 #pragma mark - 屏幕旋转的 //- (UIInterfaceOrientationMask)application:(UIAppli...
  • li_yangyang_li
  • li_yangyang_li
  • 2016年07月07日 09:17
  • 5324

个人iOS项目常用效果方法注意点集锦(上)

50.禁止横屏方法 - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForW...
  • u012960049
  • u012960049
  • 2016年07月13日 09:57
  • 2578

iOS的push方法推出控制器界面中单个屏幕的旋转问题

前言 相信很多人都遇到屏幕旋转的的问题,尤其push方法推出控制器的view的时候,很遇到很多的问题,我之前遇到问题就是很坑的问题,连续反复push方法、pop方法推出和退出需要横屏控制器的显示的时...
  • ProgrammerWorking
  • ProgrammerWorking
  • 2018年01月08日 19:20
  • 89
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS6的旋屏控制技巧
举报原因:
原因补充:

(最多只允许输入30个字)