ios 横竖屏切换总结

  • UIViewController强制竖屏:

如果想整个APP竖屏,可以写一个BaseViewcontroller

1 先在AppDelegate.m里面重写如下方法

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window

{

//返回你要支持的屏幕方向,如果只支持竖屏,直接返回竖屏的宏

}

2 在UIViewController的

- (void)viewWillAppear:(BOOL)animated{

//interfaceOrientation为方向宏定义

[[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:interfaceOrientation] forKey:@"orientation"];

}

  • 整体竖屏,但是个别界面需要横屏

如果界面中有个别界面需要横屏,可以增加一个标志位来控制supportedInterfaceOrientationsForWindow的返回值,比如:

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window

{

if (!self.allowRotation) {

return UIInterfaceOrientationMaskPortrait;

}

return UIInterfaceOrientationMaskLandscapeRight; //界面只能往右旋转

}

然后在你需要横屏的UIViewController代码里面如下实现:(记得横屏标志位的值设置)

- (void) viewWillAppear:(BOOL)animated

{

[super viewWillAppear:animated];

[[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:UIInterfaceOrientationLandscapeRight] forKey:@"orientation"];

}

  • 兼容性问题

preferredInterfaceOrientationForPresentation这个方法在不同IOS版本的定义是不一样的。

<IOS9:

- (NSUInteger)preferredInterfaceOrientationForPresentation {

return UIInterfaceOrientationPortrait;

}

>=IOS9

- (UIInterfaceOrientationMask)supportedInterfaceOrientations {

return UIInterfaceOrientationMaskPortrait;

}

注意如果重写了supportedInterfaceOrientations方法,那么在IOS7版本中从横屏切换到竖屏会存在切换不过来的问题。我当时就是在UIViewControler里面重写了

- (UIInterfaceOrientationMask)supportedInterfaceOrientations

最后为了解决IOS7版本的问题,需要把如上重写删除。

同时注意UIViewController里面的interfaceOrientation属性也是在IOS8以后就不建议使用了。

时间: 2024-12-09 13:39:44

ios 横竖屏切换总结的相关文章

iOS 横竖屏切换(应对特殊需求)

iOS 中横竖屏切换的功能,在开发iOS app中总能遇到.以前看过几次,感觉简单,但是没有敲过代码实现,最近又碰到了,demo尝试了几种情况,这里就做下总结.注意 横屏两种情况是反的你知道吗? UIInterfaceOrientationLandscapeRight与UIInterfaceOrientationMaskLandscapeRight都代表横屏,Home键在右侧的情况:UIDeviceOrientationLandscapeLeft则是Home键在左侧. 一般情形 所有界面都支持横

[iOS]终极横竖屏切换解决方案1

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "Helvetica Neue"; background-color: #ffffff } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "Helvetica Neue"; color: #8c8c8c; background-color: #ffffff } p.p3 { margin: 0.0px

[iOS]终极横竖屏切换解决方案

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "Helvetica Neue"; background-color: #ffffff } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "Helvetica Neue"; color: #8c8c8c; background-color: #ffffff } p.p3 { margin: 0.0px

ios横竖屏

ios横竖屏的效果是不相同的,所以我们在开发中如果允许屏幕横竖屏间的切换,那么我们就要调整视图的布局.利用Interface Builder开发,我们可以快速的拖拽出合适的界面布局,但是屏幕自动切换布局不能很好的适配,下图是,没有做任何调整的状态下,实现的横竖屏切换,可以看到界面不是很美观. 目前我所知的实现ios横竖屏切换的解决方案共有三种: 1.利用Interface Builder适配器自动适配调整界面. 2.在横竖屏切换时,每个控件重新布局. 3.利用Interface Builder创

【IOS界面布局】横竖屏切换和控件自适应(推荐)

[IOS界面布局]横竖屏切换和控件自适应(推荐) 分类: [MAC/IOS下开发]2013-11-06 15:14 8798人阅读 评论(0) 收藏 举报 横竖屏切换 自适应 第一种:通过人为的办法改变view.transform的属性. 具体办法: view.transform一般是View的旋转,拉伸移动等属性,类似view.layer.transform,区别在于 View.transform是二维的,也就是使用仿射的办法通常就是带有前缀CGAffineTransform的类(可以到API

iOS开发之判断横竖屏切换

/** *  当屏幕即将旋转的时候调用 * *  @param toInterfaceOrientation 旋转完毕后的最终方向 *  @param duration  旋转动画所花费的时间 */ - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { if (UIInterfaceOrientation

iOS关掉横屏后某单个页面横竖屏切换

在你想支持横竖屏的viewController里面重写两个方法: // 支持设备自动旋转 - (BOOL)shouldAutorotate {     return YES; } // 支持横竖屏显示 - (NSUInteger)supportedInterfaceOrientations {     return UIInterfaceOrientationMaskAll; } 这样在这个viewController中就可以横竖屏切换了. 但是,如果你window的rootViewContro

iPad纯代码实现横竖屏切换,采用相对布局

因为本来不喜欢使用StoryBoard.xib等可视化编程,一直使用的纯代码布局,但是纯代码布局的iOS开发者会遇到一个问题,就是横竖屏适配的问题,如果使用自动布局,那些约束的,写起来都是不难,但是控件之间的关联太多,以至于维护性很差.本人由于工作的原因,做iPad开发,那就必须要解决横竖屏适配的问题,于是就有了这篇文章. 代码如下: // //  ViewController.swift //  iPad横竖屏切换 // //  Created by zhangxu on 16/7/30. /

Activity嵌套多个Fragment实现横竖屏切换

一.上图 二.需求 近期项目遇到个横竖屏切换的问题,较为复杂,在此记之. 1.Activity中竖屏嵌套3个Fragment,本文简称竖屏FP1,FP2,FP3. 2.其中竖屏FP1与FP2可以切换为横屏的FL1,FL2,即竖屏FP1切换到对应的横屏FL1,竖屏FP2对应切换到横屏FL2. 3.FP3不允许横竖屏切换. 4.竖屏FP1,FP2,FP3用ViewPager实现左右滑动切换. 5.横屏的FL1,FL2用布局中的切换按扭实现左右切换,不允许滑动切换. 看到这需求有点儿晕菜了吧!!!呵呵