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简介相关推荐

  1. 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ...

  2. 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)

    2016年GitHub 排名前 100 的安卓.iOS项目简介(收藏)   排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android ...

  3. iOS UIColor简介

    1. UIColor初始化 由白色透明度创建 + (UIColor *)colorWithWhite:(CGFloat)white alpha:(CGFloat)alpha; 由三原色创建 + (UI ...

  4. GitHub 排名前 100 的安卓、iOS项目简介

    GitHub Android Libraries Top 100 简介 转自:http://www.devstore.cn/essay/essayInfo/6485.html 排名完全是根据 GitH ...

  5. 转:GitHub 排名前 100 的安卓、iOS项目简介

    排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...

  6. Objective-C语法之Objective-C语言和iOS系统(简介,语法,系统结构)

    简介 Objective-C,是扩充C的面向对象编程语言.它主要使用于Mac OS Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是在C的基础上,加入面向对象特 ...

  7. 【转】GitHub 排名前 100 的安卓、iOS项目简介

    GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...

  8. iOS UIScreen详解

    获取主屏幕对象 UIScreen *screen =[UIScreen mainScreen]; 复制代码 截屏 利用的当前在Screen上的部分生成一个UIView,利用这个UIVIew可以做一些全 ...

  9. iOS AFNetworking简介

    1. AFNetworking AFNetworking是一个轻量级的iOS网络通信类库,让网络通信功能的实现变得十分简单. 在Podfile中安装 pod 'AFNetworking' 导入AFNe ...

最新文章

  1. Elastricsearch 索引操作详解(快速入门、索引管理、映射详解、索引别名)
  2. CentOS7 通过 YUM 升级 VIM8
  3. c# java数据类型不同点
  4. springboot的yml配置文件绑定时必须和相应的类中的属性类型对应,不然启动报错
  5. eclipsejvm内存不足_Eclipse无法调试及编译时内存不足的解决
  6. 路径规划算法:A*算法 - 附代码
  7. python虚拟环境 pyenv_Python多版本管理和虚拟环境维护(pyenv, pyenv-virtualenv)
  8. PowerBuilder9.0连接ORACLE数据库
  9. 程序员考证之信息系统项目管理师
  10. [小把戏] 之IBatis.Net系统分页问题的解决
  11. android 文件存储基础
  12. 2021年建筑架子工(建筑特殊工种)试题及答案及建筑架子工(建筑特殊工种)
  13. 算法设计与分析 Dij证明
  14. Android最新版支付宝钱包的实例源码
  15. steam游戏上架流程四:Steamworks SDK 的API 方法回调方式 ( Callback )
  16. js 时间戳与时间格式的转化, xx天xx小时xx分倒计时,距离当前时间多久
  17. c语言域宽参数,输入%5d是什么意思?
  18. 【目标检测】MMDetection的安装与基础使用
  19. 计算机专业学生参加igem,iGEM:走向国际舞台的竞赛,到底有何魅力?
  20. Jira、Confluence安装教程(支持最新版)

热门文章

  1. 一天掌握C51单片机基础1-计算机数值与MCS51单片机
  2. 【Pygame实战】好“球”推荐——“足”出精彩,追“球”健康,足不出户在家也能“踢足球”啦~
  3. 图片去水印app-一键去除图片水印
  4. python实验课_#012python实验课
  5. QQ好友列表名片点赞全自动脚本,使用autojs开发的免root运行
  6. 突发!华为某BG总裁猝死!执掌最大营收业务,东南大学毕业,在职已超26年
  7. Hystrix之服务降级代码演示
  8. 在苹果Mac上怎样创建新的钥匙串?
  9. lm80认证_LM80测试是什么,LM80报告是什么,LM80认证是什么
  10. android专有驱动和设备驱动,针对Android驱动程序问题的三种全合一解决方案