关于监听与控制设备旋转全解析(UIDeviceOrientationDidChangeNotification)

一类情况:

  初始化app的方向,比如只支持横屏或者竖屏。下面举例只支持竖屏的案例

在app的属性里面手动设置

上面标注了该app支持的方向种类,要是在app里支持Portrait方向,还需要添加以下代码

二类情况:

上面的代码表明app支持了两个方向,Protrait 和PortraitUpsideDown,如果我要求在app在某个

方向的时候禁止屏幕旋转,该怎么做呢?

在swift中禁止当前屏幕旋转

       UIDevice.currentDevice().endGeneratingDeviceOrientationNotifications()
        UIDevice.currentDevice().endGeneratingDeviceOrientationNotifications()

注意是两行,理论上只要一行代码,但是可能是swift中的bug,笔者发现连续调用两次才能达到

禁止屏幕旋转的效果

打开屏幕旋转:

UIDevice.currentDevice().beginGeneratingDeviceOrientationNotifications()

这里只要一行就可以打开屏幕旋转的功能了,??

三类情况:

我们在控制了屏幕怎么旋转之后该怎么监听这些旋转的事件呢?因为我们往往需要在屏幕旋转的时候做

一些我们需要的操作。

在初始化的时候添加事件监听:

    override func viewWillAppear(animated: Bool) {
             NSNotificationCenter.defaultCenter().addObserver(self, selector: "deviceOrientChange:", name: UIDeviceOrientationDidChangeNotification, object: nil)
    }

在deviceOrientChange中就可以任意的写自己需要的功能了

在UI删除的时候一定要记得删除监听

NSNotificationCenter.defaultCenter().removeObserver(self, name: UIDeviceOrientationDidChangeNotification, object: nil)
时间: 2024-10-14 01:47:17

关于监听与控制设备旋转全解析(UIDeviceOrientationDidChangeNotification)的相关文章

Android项目:输入法软键盘显示/隐藏的监听和控制,InputMethodManager用法研究

在项目开发中,用到编辑框的地方经常涉及到要监听或者控制软键盘的显示/隐藏状态.本以为这是很容易解决的一个小问题,没想到当初碰到这个问题才明白还得花点小心思才能整好.现将针对软键盘的显示/隐藏状态的监听/监控方法做一些总结,以备后用. 一.点击空白处隐藏软键盘 这是具有编辑框焦点的页面对输入法软键盘状态监听的一般需求和解决方法. 首先获得InputMethodManager:        InputMethodManager manager = (InputMethodManager) getS

利用select/poll监听多个设备详解

如果一个应用程序去处理多个设备,例如应用程序读取网路数据,按键,串口,一般能想到的有三种方法: 方法1: 串行+阻塞的方式读取: while(1) { read(标准输入); read(网络); } 缺点:每当阻塞读取标准输入时,如果用户不进行标准输入的操作,而此时客户端给服务器发送数据,导致服务器无法读取客户端发送来的数据! 方法2: 采用多线程或者多进程机制来实现读取: 开辟多个线程,每一个线程处理一个设备,不会导致的数据的无法读取,但是系统的开销相比方法1要大! 方案3:采用linux系统

Android监听外部存储设备的状态(SD卡、U盘等等)

最近在项目中需要对外部存储设备的状态进行监听,所以整理了此笔记,以便日后查看. 外部存储设备的状态变化时发出的广播 对比不同状态下的广播 1. 插入外部SD卡时: 2. 移除外部SD卡时: 3. 连接PC进入USB大容量存储模式时: 4. 连接PC退出USB大容量存储模式时: 代码实现监听 public void startListen() { IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED); i

如何监听其他GPIB设备

使用GPIB Interactive Control工具 1. 获得gpib interface的handler ibfind gpib0 2. 设置当前的gpib0为SC(system controller) A. ibconfig B. 选择10 C. 输入1 3. 设置当前的gpib0为CIC(controll in charge) ibsic(488.1) 或 sendifc(488.2) 4. 监听对应的Primary Address(不是gpib0或gpib1里面的0和1) ibln

Android 监听APP进入后台或切换到前台方案对比

在我们开发的过程中,经常会遇到需要我们判断app进入后台,或者切换到前台的情况.比如我们想判断app切换到前台时,显示一个解锁界面,要求用户输入解锁密码才能继续进行操作:我们想判断app切换到后台,记录一下log:或者当用户切换回前台时,我们想刷新一下页面的数据等等...... android里面监听app前后台的方案很多(这还是得归根于安卓提供了丰富的api和强大的架构支撑,呵呵~),比如可以通过ActivityManager提供的getRunningAppProcesses()获取系统当前运

AlarmManager、PendingIntent的使用附件Home监听十分钟后再度启动应用取消服务

AlarmManager.PendingIntent的使用\附件Home监听十分钟后再次启动应用取消服务 AlarmManager.PaddingIntent的使用\ \附件Home监听十分钟后再次启动应用取消服务 对应AlarmManage有一个AlarmManagerServie服务程 序,该服务程序才是正真提供闹铃服务的,它主要维护应用程序注册下来的各类闹铃并适时的设置即将触发的闹铃给闹铃设备(在系统中,linux实现的设备名 为”/dev/alarm”),并且一直监听闹铃设备,一旦有闹铃

oracle监听

监听:客户端与数据库通信建立连接的时候,帮个小忙,在数据库和客户端之间建立起连接. 特点:独立性.监听是数据库独立的一个模块,它可以在数据库启动后再起监听,或者先起监听,再起数据库.监听与数据库没有太大关系. 1.先介绍两个文件 listener.ora:他是在数据库服务端建立的.他里面就是监听的ip地址和端口号.他和监听建立连接. LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.40.5)(PORT = 1

Ext JS 5的声明式事件监听

原文:Declarative Listeners in Ext JS 5 在前文<在Ext JS 5使用ViewControllers>中,简单的介绍了Ext JS 5的一项重要改进--声明式事件监听.在本文,将深度探讨如何使用声明式事件监听啦简化应用程序的视图并减少自定义组件的样板代码. 注意:文章假设你使用的是Ext JS 5.0.1或更高版本. 什么是声明式事件监听? 所谓的"声明式事件监听",就是指定义在类主体中的监听或在实例的配置对象中使用了listeners配置

html屏幕旋转事件监听

近期做微信服务号开发,在做图片展示的时候需要横竖屏的检测实现图片大小不同的展示. 添加屏幕旋转事件侦听,可随时发现屏幕旋转状态(左旋.右旋还是没旋). 摘自:http://bbs.phonegap100.com/thread-28-1-1.html //js 判断屏幕是否旋转 4. 屏幕旋转事件:onorientationchange 添加屏幕旋转事件侦听,可随时发现屏幕旋转状态(左旋.右旋还是没旋).例子: // 判断屏幕是否旋转 function orientationChange() {