在苹果设备的应用开发过程中,我们经常会需要处理屏幕的分辨率问题,包括普通屏幕和Retain屏幕。
处理屏幕分辨率时,分为点(point)分辨率和像素(pixer)分辨率。当我们查看设备参数时,看到的一般会是像素分辨率,因为它的数值更大,看起来更高大上。接下来,我们以iPhone设备为例,来看一看如何在开发中分别处理点分辨率和像素分辨率。
首先,在Xcode中创建一个iOS下的单视图应用(Single View Application),然后,在ViewController.m文件中的viewDidLoad方法中创建相关的代码。
下面的代码,会显示当前设备的点分辨率。
CGSize size = [[UIScreen mainScreen] bounds].size; NSLog(@"Points: width(%f), height(%f)", size.width, size.height);
如果测试的设备使用了Retain屏幕,那么,以上代码显示数据的会远低于标识的分辨率参数,而下面的代码则会显示完整的像素分辨率。
CGSize size = [[UIScreen mainScreen] bounds].size; float scale = [UIScreen mainScreen].scale; NSLog(@"Pixers: width(%f), height(%f)", size.width * scale, size.height * scale);
在第二段代码中,我们使用了屏幕的scale属性,其值就是点与像素的关系。如果scale值为1,则说明设备没有使用Retain屏幕;如果大于1,则说明设备使用了Retain屏幕;如果scale属性值为3,则表示屏幕上的一个点(point)包含9个(3*3)像素(pixer)。
一般来讲,在iOS或macOS系统的界面开发中只使用点坐标就可以了,这样可以简化不少的坐标处理工作。需要注意的是,UIKit界面的原点(0,0)位于左上角,而SpriteKit中界面原点则位于左下角。
原文:http://www.cnblogs.com/zhgq/p/6618734.html