iOS屏幕旋转

UIInterfaceOrientation方向枚举: UIInterfaceOrientationPortrait //home健在下 UIInterfaceOrientationPortraitUpsideDown //home健在上 UIInterfaceOrientationLandscapeLeft //home健在左 UIInterfaceOrientationLandscapeRight //home健在右

旋转屏幕时触发的函数:
//旋转方向发生改变时
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
}
//视图旋转动画前一半发生之前自动调用
-(void)willAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
}
//视图旋转动画后一半发生之前自动调用
-(void)willAnimateSecondHalfOfRotationFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration {
}
//视图旋转之前自动调用
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
}
//视图旋转完成之后自动调用
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
}
//视图旋转动画前一半发生之后自动调用
-(void)didAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
}

如果项目中用了navigationViewController, 那么就应该新建一个uinavigationViewController的子类,然后在这个类里面写上下面的代码,在使用的时候就用自定义的这个navCtr, 就是说需要在根视图里面控制

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
return toInterfaceOrientation != UIDeviceOrientationPortraitUpsideDown; 
} 
 - (BOOL)shouldAutorotate { 
if ([self.topViewController isKindOfClass:[AddMovieViewController class]]) {       // 如果是这个 vc 则支持自动旋转 
return YES; 
} 
return NO; 
} 
- (NSUInteger)supportedInterfaceOrientations { 
return UIInterfaceOrientationMaskAllButUpsideDown; 
}

1.Window级别的控制 对于UIApplicationDelegate的这个方法声明,大多数情况下application就是当前的application,而window通常也只有一个。所以基本上通过window对横屏竖屏interfaceOrientation的控制相当于全局的。 //每次试图切换的时候都会走的方法,用于控制设备的旋转方向. - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { if (_isRotation) { return UIInterfaceOrientationMaskLandscape; }else { return UIInterfaceOrientationMaskPortrait; } }


2.Controller层面的控制 //哪些页面支持自动转屏 - (BOOL)shouldAutorotate{

return YES;
}
// viewcontroller支持哪些转屏方向
- (UIInterfaceOrientationMask)supportedInterfaceOrientations{

    return UIInterfaceOrientationMaskAllButUpsideDown;
 }

3.使得特定ViewController坚持特定的interfaceOrientation. 当然,使用这个方法是有前提的,就是当前ViewController是通过全屏的 Presentation方式展现出来的. - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation NS_AVAILABLE_IOS(6_0);


4.当前屏幕方向interfaceOrientation的获取.

 有3种方式可以获取到“当前interfaceOrientation”:
controller.interfaceOrientation,获取特定controller的方向
[[UIApplication sharedApplication] statusBarOrientation] 获取状态条相关的方向
[[UIDevice currentDevice] orientation] 获取当前设备的方向

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏hotqin888的专栏

小程序中搜索文件,阅览pdf,分享文件链接,评论表情符号

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

12210
来自专栏王大锤

iOS8 UICollectionView横向滑动demo

45060
来自专栏xx_Cc的学习总结专栏

六天完成一个简单iOS App - 第五天

33260
来自专栏谈补锅

浏览器音频兼容和ffmpeg的音频转码使用

1、百度搜索浏览器对于音频文件的兼容,排在前面的文章大部分是复制粘贴很久以前的文章,容易误导搜索资料的人,

31930
来自专栏游戏杂谈

AS3给图片加水印文字

通过FileReference获取选中的图片,调用它的load方法,将图片存入到内存中。使用Loader(flash.display.Loader)类的loa...

12420
来自专栏Scott_Mr 个人专栏

React Native 系列(五) -- 组件间传值

389100
来自专栏猿人谷

Cocoa编程中视图控制器与视图类详解

iPhone编程规则是:一个窗口,多个视图。UIView是iPhone屏幕上很多控件的基础类。每个iPhone用户界面都是由显示在UIWindow(这其实也是个...

26050
来自专栏一“技”之长

iOS好用的第三方侧边栏控件——MMDrawerController

        很多应用程序都采用了侧边栏这样的界面结构,MMDrawerController是一个轻量级的侧边栏抽屉控件,其支持左侧抽屉和右侧抽屉,可以很好的...

15820
来自专栏听雨堂

自适应页面高度

      困扰了我很久的问题:我很想让一个框架左侧的菜单(控件或者是折叠的LI或者别的),能够自动适应浏览器的变化。因为即使是同一分辨率,页面中的实际高度也不...

30570
来自专栏Youngxj

41个Web开发者都收藏的实用代码

27330

扫码关注云+社区

领取腾讯云代金券