https://www.jianshu.com/p/d6cb54d2eaa1  这篇文章给出的方案是可行的。

经测试,想要第一个界面强制横屏,第二个界面强制竖屏, dismiss掉之后回到第一个界面依然强制横屏。用户的手机设备禁止旋转按钮不打开状态下,旋转手机屏幕能依然强制横屏或者竖屏。

第一个界面强制横屏 在工程设置里

如果是要第一个界面强制竖屏 那么设置为

AppDelegate里的系统方法为:

AppDelegate.h里公开一个字段来确定是横屏还是竖屏

@property(nonatomic,assign)BOOL allowRotation;

AppDelegate.m文件中添加代码

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

{

if (self.allowRotation == YES) {

//横屏

return UIInterfaceOrientationMaskLandscape;

}else{

//竖屏

return UIInterfaceOrientationMaskPortrait;

}

}

在第一个界面的控制器里添加代码

#import "AppDelegate.h"

#import "UIDevice+TFDevice.h"

-(void)viewWillAppear:(BOOL)animated{

[super viewWillAppear:animated];

NSLog(@"%s",__func__);

AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

//允许转成横屏

appDelegate.allowRotation = YES;

//调用横屏代码

[UIDevice switchNewOrientation:UIInterfaceOrientationLandscapeLeft];

}

在第二个界面的控制器里

添加代码

#import "AppDelegate.h"

#import "UIDevice+TFDevice.h"

- (void)viewDidLoad {

[super viewDidLoad];

NSLog(@"%s",__func__);

AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

//允许转成竖屏

appDelegate.allowRotation = NO;

//调用竖屏代码

[UIDevice switchNewOrientation:UIInterfaceOrientationPortrait];

}

另外对UIDevice设备做一个分类扩展

@interface UIDevice (TFDevice)

/**

* @interfaceOrientation 输入要强制转屏的方向

*/

+ (void)switchNewOrientation:(UIInterfaceOrientation)interfaceOrientation;

@end

#import "UIDevice+TFDevice.h"

@implementation UIDevice (TFDevice)

+ (void)switchNewOrientation:(UIInterfaceOrientation)interfaceOrientation

{

NSNumber *resetOrientationTarget = [NSNumber numberWithInt:UIInterfaceOrientationUnknown];

[[UIDevice currentDevice] setValue:resetOrientationTarget forKey:@"orientation"];

NSNumber *orientationTarget = [NSNumber numberWithInt:interfaceOrientation];

[[UIDevice currentDevice] setValue:orientationTarget forKey:@"orientation"];

}

@end

iOS强制横竖屏转换的更多相关文章

  1. ios 6 横竖屏转换

    xcode 版本4.5     模拟器:6.0 项目需求:刚进去界面横屏,从这个界面进去的界面全是竖屏. 程序的根控制器用了UINavigationController.下面是代码: 1.在appde ...

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

    [iOS]终极横竖屏切换解决方案 大家的项目都是只支持竖屏的吧?大多数朋友(这其中当然也包括博主),都没有做过横屏开发,这次项目刚好有这个需求,因此把横竖屏相关的心得写成一遍文章供诸位参考. 01.综 ...

  3. JS禁止横竖屏切换,强制横竖屏显示

    js判断屏幕横竖屏: function orient() { //alert('gete'); if (window.orientation == 0 || window.orientation == ...

  4. Android Activity横竖屏转换的生命周期

    新创建一个Activity,用来此次测试. 先贴代码 package com.hugo.apj.activitylifetest; import android.support.v7.app.AppC ...

  5. 代码处理 iOS 的横竖屏旋转

    一.监听屏幕旋转方向 在处理iOS横竖屏时,经常会和UIDeviceOrientation.UIInterfaceOrientation和UIInterfaceOrientationMask这三个枚举 ...

  6. Android之怎样强制横竖屏显示

    2  强制横屏竖屏显示(不依据手机传感器调整) 在清单文件AndroidManifest.xml中 在<activity 里面增加: android:screenOrientation=&quo ...

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

    iOS 中横竖屏切换的功能,在开发iOS app中总能遇到.以前看过几次,感觉简单,但是没有敲过代码实现,最近又碰到了,demo尝试了几种情况,这里就做下总结.注意 横屏两种情况是反的你知道吗? UI ...

  8. iOS 中各种横竖屏切换总结

    iOS 中横竖屏切换的功能,在开发iOS app中总能遇到.以前看过几次,感觉简单,但是没有敲过代码实现,最近又碰到了,demo尝试了几种情况,这里就做下总结.注意 横屏两种情况是反的你知道吗? UI ...

  9. iOS强制横屏或强制竖屏

    原文链接 https://www.jianshu.com/p/d6cb54d2eaa1 亲测第二种我这边是阔以滴 第一种解决方案(不推荐,直接跳过看第二种解决方案): //强制转屏 - (void)i ...

随机推荐

  1. 运维自动化管理服务器 CheungSSH

    CheungSSH 是一款中国人自主研发的Linux运维自动化管理服务器软件,后端使用 Python 语言+Django 的 Web 框架,前端使用 Bootstrap+Javascript+jQue ...

  2. C++中对C的扩展学习新增语法——内联函数以及函数参数

    内联函数以及函数参数 内联函数 使用 inline 关键字必须和函数体放在一起. 内联函数具有内部链接属性. 内联函数会被编译器在编译阶段替换到函数调用的地方. 可以把内联函数定义写到头文件中,多个c ...

  3. 简单的倒叙应用---倒序打印字符串(C语言)

    void reverseStr(char* str){ if(*str=='\0'){ return; } reverseStr(str+1); printf("%c\n",*st ...

  4. secureCRT连接虚拟机

    1.secureCRT英文版下载 链接:https://pan.baidu.com/s/1LFWD-k2r4ZB7DHQA66QogQ 密码:khmo 破解方式参考 2.虚拟机静态IP设置 参考 3. ...

  5. 安装Fedora后

    更新操作系统版本: https://fedoraproject.org/wiki/DNF_system_upgrade    靠谱: 设置ssh:ssh生成公钥私钥.默认root(.ssh/confi ...

  6. 函数指针和成员函数指针有什么不同,反汇编带看清成员函数指针的本尊(gcc@x64平台)

    函数指针是什么,可能会答指向函数的指针. 成员函数指针是什么,答指向成员函数的指针. 成员函数指针和函数指针有什么不同? 虚函数指针和非虚成员函数指针有什么不同? 你真正了解成员函数指针了吗? 本篇带 ...

  7. opencv HSV找颜色,找轮廓用最小旋转矩形框出

    #include <opencv2/opencv.hpp> #include<iostream> #include<string> using namespace ...

  8. SpringBoot学习(二)—— springboot快速整合spring security组件

    Spring Security 简介 spring security的核心功能为认证(Authentication),授权(Authorization),即认证用户是否能访问该系统,和授权用户可以在系 ...

  9. python进程池与线程池

    为什么会进行池化? 一切都是为了效率,每次开启进程都会分配一个属于这个进程独立的内存空间,开启进程过多会占用大量内存,系统调度也会很慢,我们不能无限的开启进程. 进程池原来大概如下图 假设有100个任 ...

  10. Spring Security之多次登录失败后账户锁定功能的实现

    在上一次写的文章中,为大家说到了如何动态的从数据库加载用户.角色.权限信息,从而实现登录验证及授权.在实际的开发过程中,我们通常会有这样的一个需求:当用户多次登录失败的时候,我们应该将账户锁定,等待一 ...