Apple开发者文档中关于UIApplication/UIScreen/UIDevice的简述

UIApplication/UIScreen/UIDevice平常用的很少;但毕竟是属于UIKit的重要组成部分,有必要了解一下。

UIDevice

通过UIDevice可以获取一个描述当前设备的单例。你可以获取以下设备相关的信息:设备名,设备型号,操作系统名称和版本。

我们还可以通过UIDevice实例检测设备的变化,比方横屏还是竖屏。Orientation属性代表了设备的方位,也可以通过注册UIDeviceOrientationDidChangeNotification通知消息来实时获取方位变化。在要使用这些数据前,必须先通过beginGeneratingDeviceOrientationNotifications方法调用开启该功能,然后调用endGeneratingDeviceOrientationNotifications禁用该功能。

此外,我们还能通过该实例获取关于电量状态变化的信息和通知信息(batteryState,batteryLevel)。还有就是关于接近传感数据(proximityState),接近传感器用于侦测用户是否拿着手机并紧贴在脸庞。同样的,只有在必要的时候才开启以上两项功能。

从iOS4.2开始,我们可以使用playInputClick实例方法响应用户自定义的键盘操作。

UIApplication

UIApplication是一个控制和协调运行中应用的中心。任何一个应用有且仅有一个UIApplication(或是一个UIApplication的一个子类)。一旦应用启动,UIApplicationMain就会被调用。在应用的某个任务中,这个函数会创建一个UIApplication单例。因此,你可以使用sharedApplication来获取该对象。

UIApplication的一个重要作用,就是它是所有用户操作事件传递链的开始。它也将由UIControl类传递给它的动作信息,进一步分发合适的目标类。此外,UIApplication对象维护了所有在当前APP中打开的windows的列表。应用对象一般都会有一个代理,用于处理应用运行时信息,如:应用开启,内存不足,应用关闭。因此应用有机会处理这些重要的信息。

APP之前可以通过openURL方法进行协作,如处理资源类似email和图像文件。比方,一个应用打开了调用了email URL,使用这个方法可以打开邮件客户端并显示信息。

UIApplication接口允许你管理设备相关的行为,具体如下:

在设备方位变化时,控制应用的反应;

临时阻断触摸事件。

开启和关闭接近传感器。

注册远程通知消息。

触发撤销或重做UI (applicationSupportsShakeToEdit)

检测一个安装好的应用是否可以打开一个URL(canOpenURL:).

在应用退到后台前,让它在后台还能再运行一下,完成一些收尾工作。

调度或中止本地通知。

协同处理接收到的远程控制事件。

重新恢复应用的状态。

绝大多数的应用不需要创建UIApplication子类,只需要使用UIApplication的代理函数管理系统和应用之间的交互。

如果你需要实现自定义一个事件或动作分发系统时,你才需要创建UIApplication子类。这样的话,你需要重写sendEvent或sendAction方法来自定义分发机制。我们尽量避免这种情况。

UIScreen

UIScreen对象定义了与硬件显示屏相关的属性。iOS设备有个主屏,外加0个或多个附屏。这个类可以获取所有与设备相关的屏幕。Screen类定义了bounds,以及其他属性如对比度。

在iOS8之前,screen的bounds属性一定反映了屏幕在竖屏情况的尺寸。旋转屏幕成为横屏或倒立情况都不会改变bounds属性。从iOS8开始,bounds属性参考设备方位的变化。依赖屏幕尺寸的应用可以使用fixedCoordinateSpace属性来修正点在坐标中的位置。

当用户连接或断开屏幕时,系统会发送通知给应用。利用代理可以长时间的监控通知信息。连接和断开的通知可能随时发生,也许这时你的应用在后台被挂起。在应用挂起时,通知会保存在队列中,直到你的app’在前台或后台又开始运行时。

但系统通知外部屏连接上时,你可以随意使用这个额外的屏幕空间。为使用这个空间,需要创建uiwindow对象,为新的screen进行赋值,显示到window上。屏幕支持多种分辨率,其中使用不同的像素宽高比。屏幕对象使用最普通的屏幕模式,你也可以设置适合你的模式。比方,如果你在游戏应用中使用OpenGL

ES,依据640*480设计了纹理,你可以更新屏幕模式为更高的分辨率。

总结:

1,开发中接触到UIApplication/UIScreen/UIDevice的机会不多;而且大多是简单的应用;对其有个大概了解即可;

2,以上内容都翻译自苹果官方内容,以下为链接

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIDevice_Class/index.html#//apple_ref/occ/cl/UIDevice

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/occ/cl/UIApplication

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScreen_Class/index.html#//apple_ref/occ/cl/UIScreen

学的越多,做的越快;学的越多,做的越好;

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-06 23:48:16

Apple开发者文档中关于UIApplication/UIScreen/UIDevice的简述的相关文章

微信公共开发者文档 阅读笔记

先上效果图: 作者博客:http://blog.csdn.net/stationxp 作者微博:http://weibo.com/liuhailong2008 转载请取得作者同意 一 基础篇 1.新手接入: http://mp.weixin.qq.com/wiki/index.php?title=接入指南需要注意的是URL必须是公网能访问的,必须是80端口. 刚才被80端口郁闷了好久,文档中也没明确写. 文档最下面写着:"此外请注意,微信公众号接口只支持80接口".好吧,是我人品问题.

利用POI操作不同版本word文档中的图片以及创建word文档

我们都知道要想利用java对office操作最常用的技术就应该是POI了,在这里本人就不多说究竟POI是什么和怎么用了.先说本人遇到的问题,不同于利用POI去向word文档以及excel文档去写入数据和向外导出数据并且保存到数据库中这些类似的操作,由于业务上的需要需要利用POI去读取word中的图片,并且去把图片去保存为一个file文件.查了Apache公司提供的api帮助文档,再网友的一些线索,本人也总结了几中对不同word版本(.doc或者是.docx结尾)对于文件中所含图片的操作方式,希望

利用iStylePDF的API实现在PDF文档中动态插入一幅图片

PDF的交互特性里面有一种叫Annotation的注释和标记对象,我们可以在一个注释对象中放入自己想要的数据.在这篇文章中所讲到的插入一幅图片,是我们在PDF应用中经常需要这样做的,比如个人签名的图片等. 首先我们来认识下PDF里面中的Annotations是何东东.一个annotation关联了一些注释.声音.电影等对象,PDF标准中预定义了一些常用的注释类型.在我们的帮助文档中有详细的说明,等下也会用到的,我列举出来了,如下所示 名称 数值 描述 spAnnotText 0 文本 spAnn

微信开发者文档

接收事件推送 目录 1 关注/取消关注事件 2 扫描带参数二维码事件 3 上报地理位置事件 4 自定义菜单事件 5 点击菜单拉取消息时的事件推送 6 点击菜单跳转链接时的事件推送 关注/取消关注事件 用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL.方便开发者给用户下发欢迎消息或者做帐号的解绑. 微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次 关于重试的消息排重,推荐使用FromUserName + CreateTime 排重. 假如服务器无法保证在

离线使用Android开发者文档

Android开发者网站被墙了 N 久了,不翻墙又要看文档,很痛苦啊. 原本 Android SDK 里是带了完整的文档的,可以离线浏览.我的电脑上,SDK 位置是"E:\android-sdk-windows",这个目录下有个 docs 目录,docs 下面有个 index.html 文件,这就是 Android 开发文档的起始页了,打开它就能查到绝大部分的文档,比如各种类库.入门教程等等. 可是有个问题啊,如果你电脑连接了互联网,那就奇慢无比,貌似这些离线文档中的很多资源会引用网站

Google Android开发者文档系列-创建有内容分享特性的应用之共享文件

Sharing a File(共享文件) 该系列文章是我在学习Google开发者文档时结合谷歌翻译和自身理解编写的,希望对学习Android开发的朋友带来些便利,由于个人翻译水平有限,所以内容包含原文和译文,希望浏览者结合理解,以免步入我可能错译的误区.在此感谢http://android.xsoftlab.net/提供的镜像,希望转载者注明出处http://blog.csdn.net/u014031072/article/details/51596803方便查看最新博客 Once you ha

Google Android开发者文档系列-与其他应用程序交互之使用户跳转到其它应用程序

Sending the User to Another App(使用户跳转到其它应用程序) 该系列文章是我在学习Google开发者文档时结合谷歌翻译和自身理解编写的,希望对学习Android开发的朋友带来些便利,由于个人翻译水平有限,所以内容包含原文和译文,希望浏览者结合理解,以免步入我可能错译的误区.在此感谢http://android.xsoftlab.net/提供的镜像,希望转载者注明出处http://blog.csdn.net/u014031072/article/details/515

layuiAdmin pro v1.x 【单页版】开发者文档

layuiAdmin std v1.x [iframe版]开发者文档 题外 该文档适用于 layuiAdmin 专业版(单页面),阅读之前请务必确认是否与你使用的版本对应. 熟练掌握 layuiAdmin 的前提是熟练掌握 layui,因此除了本篇文档, layui 的文档 也是必不可少的存在. 快速上手 部署 解压文件后,将 layuiAdmin 完整放置在任意目录 通过本地 web 服务器去访问 ./start/index.html 即可运行 Demo 由于 layuiAdmin 可采用前后

IT兄弟连 HTML5教程 CSS3揭秘 在HTML文档中放置CSS的几种方式

有很多方法将样式表加入到HTML中,每种方法都有自己的优点和缺点.新的HTML元素和属性已被加入,以允许样式表与HTML文档更简易地组合起来.将样式表加入到HTML中的常用方法有内联样式表.嵌入一张样式表或链接到一张外部的样式表. 1  内嵌样式表 样式可以使用style属性内联,该属性可以应用于任意body元素(包括body本身),除了basefont.param和script标记.这个属性将任意数量的CSS声明当作自己的值,而每个声明用分号隔开,如下所示: <p style="colo