iOS UIScreen简介
UIScreen
对象定义了一种基于硬件的显示相关的属性,UIScreen
对象可以充当iOS设备物理屏幕的替代者(相当于屏幕)。使用这个类来获得每个显示器设备的屏幕对象。每个屏幕对象中包含了一些屏幕相关的属性。
获取可用的屏幕对象:
1.返回一个包含所有连接到设备的屏幕的数组:
+ (NSArray *)screens NS_AVAILABLE_IOS(3_2);
返回的数组包含主屏幕加上任何其他连接到设备的屏幕。 主屏幕在返回的数组中 总是 在索引0 。 并非所有设备都支持外部(连接)显示器(如iphone连接到apple TV这样的)。 目前,外部连接显示器支持iPhone和ipad iPod-touch等。 旧设备,如iPhone 3GS不支持外部显示器。 连接外部 显示器要求 的 装置和显示 之间适当的 电缆 。
2.返回当前设备的屏幕对象:
+ (UIScreen *)mainScreen;
3.外部镜像屏幕(只读):
@property(nonatomic, readonly, retain) UIScreen *mirroredScreen NS_AVAILABLE_IOS(4_3);
获取屏幕信息范围:
4.屏幕分辨率:
@property(nonatomic, readonly) CGFloat scale NS_AVAILABLE_IOS(4_0);
例如:
float scale = [[UIScreen mainScreen] scale];
标准屏幕(iPhone 4以前)值是1,视网膜屏幕的值是2。在系统scale=2.0
时,加载图像时先找@2x
的。
5.屏幕大小:
@property(nonatomic, readonly) CGRect bounds;
例如:
CGRect rectScreen = [[UIScreen mainScreen] bounds];
NSLog(@"手机画面大小->%@", NSStringFromCGRect(rectScreen));
6.app应用画面大小:
@property(nonatomic, readonly) CGRect applicationFrame;
例如:
CGRect rect = [[UIScreen mainScreen] applicationFrame];
NSLog(@"app画面大小->%@", NSStringFromCGRect(rect));
7.物理屏幕分辨率:
@property(nonatomic, readonly) CGFloat nativeScale NS_AVAILABLE_IOS(8_0);
8.物理屏幕边框像素:
@property(nonatomic, readonly) CGRect nativeBounds NS_AVAILABLE_IOS(8_0);
获取屏幕坐标空间:
9.屏幕当前的坐标空间:
@property(readonly) id<UICoordinateSpace> coordinateSpace NS_AVAILABLE_IOS(8_0);
10.屏幕的坐标空间:
@property(readonly) id<UICoordinateSpace> fixedCoordinateSpace NS_AVAILABLE_IOS(8_0);
访问屏幕的模式:
11.屏幕的首选显示模式:
@property(nonatomic, readonly, retain) UIScreenMode *preferredMode NS_AVAILABLE_IOS(4_3);
12.这个屏幕所支持的模式列表:
@property(nonatomic, readonly, copy) NSArray *availableModes NS_AVAILABLE_IOS(3_2);
13.当前这个屏幕的模式:
@property(nonatomic, retain) UIScreenMode *currentMode NS_AVAILABLE_IOS(3_2);
要显示的连接:
14.返回屏幕当前连接对象:
- (CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel NS_AVAILABLE_IOS(4_0);
设置显示亮度:
15.设置屏幕当前的亮度水平:
@property(nonatomic) CGFloat brightness
此属性仅在主屏幕获得支持。此属性的值应该是0和1之间的数。亮度变化对应用程序仍然有效,但只有当应用程序是活动的。当你的应用程序不在前台时,系统恢复亮度设置。
16.使用软件来模拟更低的亮度:
@property(nonatomic) BOOL wantsSoftwareDimming NS_AVAILABLE_IOS(5_0);
默认是NO
。如果YES
,可以通过wantsSoftwareDimming
属性来声明此应用需要将屏幕亮度调整到比中等亮度偏暗的级别。(需要注意的是,打开wantsSoftwareDimming
可能会对性能有影响,因为这种昏暗是通过软件来实现的。)
设置显示的扫描补偿:
17.调整外接显示器的过扫描补偿:
@property(nonatomic) UIScreenOverscanCompensation overscanCompensation NS_AVAILABLE_IOS(5_0);
过扫描指的是一种起源与阴极射线管显示器的行为。由于技术上的限制,旧的CRT扫描输入的图片时可能会越过显示管的边界,造成显示的图像不完整。虽然这个技术限制应该解决,许多广播和显示器厂家仍然期望过扫描。使用overscanCompensation
属性的默认值,也就是UIScreenOverscanCompensationScale
,当iOS检测到外接显示器存在过扫描时,它会适当的缩放你的内容。在极少数情况下,你需要使用其他值来设置overscanCompensation
属性,这样做总会导致你不得不做更多的工作。
捕获屏幕快照:
返回一个基于当前屏幕内容的快照视图:
- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates NS_AVAILABLE_IOS(7_0);
在iOS7 以前, 获取一个UIView
的快照有以下步骤: 首先创建一个UIGraphics
的图像上下文,然后将视图的layer
渲染到该上下文中,从而取得一个图像,最后关闭图像上下文,并将图像显示在UIImageView
中。现在我们只需要一行代码就可以完成上述步骤了:
[view snapshotViewAfterScreenUpdates:NO];
这个方法制作了一个UIView
的副本,如果我们希望视图在执行动画之前保存现在的外观,以备之后使用(动画中视图可能会被子视图遮盖或者发生其他一些变化),该方法就特别方便。
afterUpdates
参数表示是否在所有效果应用在视图上了以后再获取快照。例如,如果该参数为NO
,则立马获取该视图现在状态的快照。
常数:
18.补偿扫描相关常数:
// when the connected screen is overscanning, UIScreen can attempt to compensate for the overscan to avoid clipping
typedef NS_ENUM(NSInteger, UIScreenOverscanCompensation) {UIScreenOverscanCompensationScale, // the final composited framebuffer for the screen is scaled to avoid clippingUIScreenOverscanCompensationInsetBounds, // the screen's bounds will be inset in the framebuffer to avoid clipping. no scaling will occurUIScreenOverscanCompensationInsetApplicationFrame, // the screen's applicationFrame will be inset in the bounds. content drawn in the bounds outside applicationFrame may be clipped
};
通知:
19.通知:
// Object is the UIScreen that represents the new screen. Connection notifications are not sent for screens present when the application is first launched
UIKIT_EXTERN NSString *const UIScreenDidConnectNotification NS_AVAILABLE_IOS(3_2);// Object is the UIScreen that represented the disconnected screen.
UIKIT_EXTERN NSString *const UIScreenDidDisconnectNotification NS_AVAILABLE_IOS(3_2);// Object is the UIScreen which changed. [object currentMode] is the new UIScreenMode.
UIKIT_EXTERN NSString *const UIScreenModeDidChangeNotification NS_AVAILABLE_IOS(3_2);UIKIT_EXTERN NSString *const UIScreenBrightnessDidChangeNotification NS_AVAILABLE_IOS(5_0);
iOS UIScreen简介相关推荐
- 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)
一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ...
- 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)
2016年GitHub 排名前 100 的安卓.iOS项目简介(收藏) 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android ...
- iOS UIColor简介
1. UIColor初始化 由白色透明度创建 + (UIColor *)colorWithWhite:(CGFloat)white alpha:(CGFloat)alpha; 由三原色创建 + (UI ...
- GitHub 排名前 100 的安卓、iOS项目简介
GitHub Android Libraries Top 100 简介 转自:http://www.devstore.cn/essay/essayInfo/6485.html 排名完全是根据 GitH ...
- 转:GitHub 排名前 100 的安卓、iOS项目简介
排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...
- Objective-C语法之Objective-C语言和iOS系统(简介,语法,系统结构)
简介 Objective-C,是扩充C的面向对象编程语言.它主要使用于Mac OS Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是在C的基础上,加入面向对象特 ...
- 【转】GitHub 排名前 100 的安卓、iOS项目简介
GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...
- iOS UIScreen详解
获取主屏幕对象 UIScreen *screen =[UIScreen mainScreen]; 复制代码 截屏 利用的当前在Screen上的部分生成一个UIView,利用这个UIVIew可以做一些全 ...
- iOS AFNetworking简介
1. AFNetworking AFNetworking是一个轻量级的iOS网络通信类库,让网络通信功能的实现变得十分简单. 在Podfile中安装 pod 'AFNetworking' 导入AFNe ...
最新文章
- Elastricsearch 索引操作详解(快速入门、索引管理、映射详解、索引别名)
- CentOS7 通过 YUM 升级 VIM8
- c# java数据类型不同点
- springboot的yml配置文件绑定时必须和相应的类中的属性类型对应,不然启动报错
- eclipsejvm内存不足_Eclipse无法调试及编译时内存不足的解决
- 路径规划算法:A*算法 - 附代码
- python虚拟环境 pyenv_Python多版本管理和虚拟环境维护(pyenv, pyenv-virtualenv)
- PowerBuilder9.0连接ORACLE数据库
- 程序员考证之信息系统项目管理师
- [小把戏] 之IBatis.Net系统分页问题的解决
- android 文件存储基础
- 2021年建筑架子工(建筑特殊工种)试题及答案及建筑架子工(建筑特殊工种)
- 算法设计与分析 Dij证明
- Android最新版支付宝钱包的实例源码
- steam游戏上架流程四:Steamworks SDK 的API 方法回调方式 ( Callback )
- js 时间戳与时间格式的转化, xx天xx小时xx分倒计时,距离当前时间多久
- c语言域宽参数,输入%5d是什么意思?
- 【目标检测】MMDetection的安装与基础使用
- 计算机专业学生参加igem,iGEM:走向国际舞台的竞赛,到底有何魅力?
- Jira、Confluence安装教程(支持最新版)
热门文章
- 一天掌握C51单片机基础1-计算机数值与MCS51单片机
- 【Pygame实战】好“球”推荐——“足”出精彩,追“球”健康,足不出户在家也能“踢足球”啦~
- 图片去水印app-一键去除图片水印
- python实验课_#012python实验课
- QQ好友列表名片点赞全自动脚本,使用autojs开发的免root运行
- 突发!华为某BG总裁猝死!执掌最大营收业务,东南大学毕业,在职已超26年
- Hystrix之服务降级代码演示
- 在苹果Mac上怎样创建新的钥匙串?
- lm80认证_LM80测试是什么,LM80报告是什么,LM80认证是什么
- android专有驱动和设备驱动,针对Android驱动程序问题的三种全合一解决方案