IOS屏幕旋转监听

IOS屏幕旋转

1.设计窗口,添加三个按钮 

2.添加事件连接

 3.按钮点击事件实现

先添加三个IBAction

实现IBAction

使用旋转立刻生效

-(IBAction)btnFixPortrait:(id)sender{//访问应用程序委托成员_app.mask = UIInterfaceOrientationMaskPortrait;//设置窗口旋转属性[self setNeedsUpdateOfSupportedInterfaceOrientations];//使用设置立刻生效//mask = UIInterfaceOrientationMaskPortrait;//只支持竖屏
}-(IBAction)btnFixLand:(id)sender{_app.mask = UIInterfaceOrientationMaskLandscape;//设置窗口旋转属性[self setNeedsUpdateOfSupportedInterfaceOrientations];//使用设置立刻生效//mask = UIInterfaceOrientationMaskLandscape;//只支持横屏
}

4.监听屏幕旋转事件

//注册屏幕旋转监听[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceOrientationDidChange) name:UIDeviceOrientationDidChangeNotification object:nil];[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];//屏幕监听事件处理
-(void)deviceOrientationDidChange{NSLog(@"%lu",[self supportedInterfaceOrientations]);switch ([UIDevice currentDevice].orientation) {case UIInterfaceOrientationUnknown:NSLog(@"Unknown");break;case UIInterfaceOrientationPortrait:NSLog(@"Portrait");break;case UIInterfaceOrientationPortraitUpsideDown:NSLog(@"UpsideDown");break;case UIInterfaceOrientationLandscapeLeft:NSLog(@"LandscapeLeft");break;case UIInterfaceOrientationLandscapeRight:NSLog(@"LandscapeRight");break;default:break;}
}

 完整示例:

//
//  ViewController.m
//  ios_screen_test
//
//  Created by Hacker X on 2023/10/10.
//#import "ViewController.h"@interface ViewController ()
#define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)
#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)
-(IBAction)btnGetOrientation:(id)sender;
-(IBAction)btnFixPortrait:(id)sender;
-(IBAction)btnFixLand:(id)sender;
@property(nonatomic) UIInterfaceOrientationMask mask;
@end@implementation ViewController
@synthesize mask;- (void)viewDidLoad {[super viewDidLoad];mask = UIInterfaceOrientationMaskPortrait|UIInterfaceOrientationMaskLandscape;//支持横竖屏切换//注册屏幕旋转监听[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceOrientationDidChange) name:UIDeviceOrientationDidChangeNotification object:nil];[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];[ViewController getDeviceOrientation];
}-(IBAction)btnGetOrientation:(id)sender{[ViewController getDeviceOrientation];
}
-(IBAction)btnFixPortrait:(id)sender{mask = UIInterfaceOrientationMaskPortrait;//只支持竖屏
}-(IBAction)btnFixLand:(id)sender{mask = UIInterfaceOrientationMaskLandscape;//只支持横屏
}+(void)setPortrait:(UIInterfaceOrientationMask) mask{mask = UIInterfaceOrientationMaskPortrait;//只支持竖屏
}+(void)setLandscape:(UIInterfaceOrientationMask) mask{mask = UIInterfaceOrientationMaskLandscape;//只支持横屏
}+(UIDeviceOrientation)getDeviceOrientation{NSLog(@"getDeviceOrientation:%ld",[UIDevice currentDevice].orientation);return [UIDevice currentDevice].orientation;
}//屏幕监听事件处理
-(void)deviceOrientationDidChange{NSLog(@"%lu",[self supportedInterfaceOrientations]);switch ([UIDevice currentDevice].orientation) {case UIInterfaceOrientationUnknown:NSLog(@"Unknown");break;case UIInterfaceOrientationPortrait:NSLog(@"Portrait");break;case UIInterfaceOrientationPortraitUpsideDown:NSLog(@"UpsideDown");break;case UIInterfaceOrientationLandscapeLeft:NSLog(@"LandscapeLeft");break;case UIInterfaceOrientationLandscapeRight:NSLog(@"LandscapeRight");break;default:break;}
}- (BOOL)prefersStatusBarHidden {return NO;
}//设置自动旋转
- (BOOL)shouldAutorotate{return NO;
}//重写基类supportedInterfaceOrientations来设置支持方向
- (UIInterfaceOrientationMask)supportedInterfaceOrientations{return mask;
}@end

上面是针对ViewControlle的,下面是针对 窗口的

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{//return UIInterfaceOrientationMaskAll;//return UIInterfaceOrientationMaskPortrait;return UIInterfaceOrientationMaskLandscape;//默认是这个UIInterfaceOrientationMaskAllButUpsideDown
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/117238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业安全—SDL概述篇

0x00 前言 众所周知,从源头开始就开发安全的代码,比产品已经成型之后付出的代价要小很多,也就是一直在说的安全左移的概念。最好就是从一开始,大家就用最安全的代码,或者是框架,那么开发出来的产品必然会减…

进程的优先级与LAMP项目部署实战

一、进程的优先级(扩展) 1、什么是进程的优先级 Linux是一个多用户、多任务的操作系统,系统中通常运行着非常多的进程。哪些进程先运行,哪些进程后运行,就由进程优先级来控制 思考:什么时候需要用到进程…

力扣-python-两数相加

题解 1: # Definition for singly-linked list. # class ListNode(object): # def __init__(self, val0, nextNone): # self.val val # self.next nextclass Solution(object):def addTwoNumbers(self, l1, l2):""":type l1: ListNode:t…

【MATLAB源码-第56期】基于WOA白鲸优化算法和PSO粒子群优化算法的三维路径规划对比。

操作环境: MATLAB 2022a 1、算法描述 1.粒子群算法(Particle Swarm Optimization,简称PSO)是一种模拟鸟群觅食行为的启发式优化方法。以下是其详细描述: 基本思想: 鸟群在寻找食物时,每只鸟都…

2023-10-17 LeetCode每日一题(倍数求和)

2023-10-17每日一题 一、题目编号 2652. 倍数求和二、题目链接 点击跳转到题目位置 三、题目描述 给你一个正整数 n ,请你计算在 [1,n] 范围内能被 3、5、7 整除的所有整数之和。 返回一个整数,用于表示给定范围内所有满足约束条件的数…

动手学深度学习—含并行连结的网络GoogLeNet(代码详解)

目录 1. Inception块3. GoogLeNet模型3. 训练模型 GoogLeNet吸收了NiN中串联网络的思想,并在此基础上做了改进,并且在2014年的ImageNet图像识别挑战赛中获得了不错的效果。 1. Inception块 GoogLeNet论文解决了多大的卷积核最合适的问题。 Inception块…

PHP 在线考试管理系统mysql数据库web结构layUI布局apache计算机软件工程网页wamp

一、源码特点 PHP 在线考试管理系统是一套完善的web设计系统 layUI技术布局 ,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 PHP 在线考试系统1 代码 https://download.csdn.net/download/qq_41…

【C++面向对象】5. this指针

文章目录 【 1. 基本原理 】【 2. 实例 】 【 1. 基本原理 】 在 C 中,只有成员函数才有 this 指针(友元函数没有 this 指针,因为友元不是类的成员),this 指针是所有成员函数的隐含参数。 在成员函数内部,…

线性表操作的实现--顺序表

本文参考朱战力老师的数据结构与算法--使用C语言一书 文章目录 前言 一、线性表是什么? 二、具体实现 1.顺序表的定义 2.初始化ListInitiate(L) 3.求当前元素个数ListLength(L) 4.插入元素ListInsert(L&…

[卷积神经网络]FasterNet论文解析

一、概述 FasterNet是CVPR2023的文章,通过使用全新的部分卷积PConv,更高效的提取空间信息,同时削减冗余计算和内存访问,效果非常明显。相较于DWConv,PConv的速度更快且精度也非常高,识别精度基本等同于大型…

iOS 配置通用链接(Universal Link)服务端和开发者后台都配置好了,还是跳转不到App

目录 一、什么是 Universal Link? 1.背景介绍 2.特点 3.运行机制原理&流程图 二、配置教程 1.第一步:开启 Associated Domains 服务 1.1 开通 Associated Domains 2.第二步:服务器配置 apple-app-site-association(AAS…

【makedown使用介绍】

如何使用makedown 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必…

pd19虚拟机软件 Parallels Desktop 19 mac中文停用功能

Parallels Desktop 19 mac是一款功能强大的虚拟机软件,它允许用户在Mac电脑上同时运行Windows、Linux和其他操作系统。Parallels Desktop提供了直观易用的界面,使用户可以轻松创建、配置和管理虚拟机。 Parallels Desktop 19 for Mac停用功能 从Paralle…

深圳世有伯乐教育科技有限公司——LJ培训

今天来吐槽一波 深圳世有伯乐教育科技有限公司就是一个垃圾的培训机构,不,说是培训机构都是扭曲事实了,因为它根本就没有国家认可的办学许可证。光说没法让人信服,以下是企查查的截图: 世有伯乐的工商信息图片 续上&…

交换机基础(四):MSTP负载均衡配置案例

如图所示是某个企业内部核心网络的结构图,目前企业中有20个VLAN, 编号为VLAN1~VLAN20, 为了确保内部网络的可靠性,使用 了冗余链路和MSTP 协议。为了能更好地利用网络资源和带宽,现管理员希望通过配置MSTP 的负载均衡实现网络带宽…

TX Text Control.NET For WPF 32.0 Crack

TX Text Control 支持VISUAL STUDIO 2022、.NET 5 和 .NET 6 支持 .NET WPF 应用程序的文档处理 将文档编辑、创建和 PDF 生成添加到您的 WPF 应用程序中。 视窗用户界面 功能齐全的文档编辑器 TX Text Control 是一款完全可编程的丰富编辑控件,它在专为 Visual Stu…

软考高级系统架构 上午真题错题总结

目录 前言一、2022年真题(√)二、2021年真题三、2020年真题(√)四、2019年真题(√)五、2018年真题(√)六、2017年真题(√)七、2016年真题(√&…

【Linux】IP协议

文章目录 📖 前言1. 网络层2. IP协议格式3. IP报文分片和组装3.1 如何分片和组装:3.2 组装的衍生问题: 4. 网段划分(重点)4.1 子网掩码:4.2 IP地址的数量限制:4.3 私有IP地址和公网IP地址&#…

JVM——堆内存调优(Jprofiler使用)Jprofile下载和安装很容易,故没有记录,如有需要,在评论区留言)

堆内存调优 当遇到OOM时,可以进行调参 1、尝试扩大堆内存看结果 2、分析内存,看哪个地方出现了问题(专业工具) 调整初始分配内存为1024M,调整最大分配内存为1024M,打印GC细节(如何添加JVM操…

本地FTP YUM源报错处理

一、问题描述 某次OS升级到Anolis 8.6后,但是还需要centos 6.5的yum源,恢复回去后,yum更新,报如下错误: Errors during downloading metadata for repository ‘base’: Curl error (8): Weird server reply for ftp…