UIScreen的scale属性

A UIScreen object contains the bounding rectangle of the device’s entire screen. When setting up your application’s user interface, you should use the properties of this object to get the recommended frame rectangles for your application’s window.

UIScreen对象包含了整个屏幕的边界矩形。当构造应用的用户界面接口时,你应该使用该对象的属性来获得推荐的矩形大小,用以构造你的程序窗口。

以下列出的属性和操作是我用过的。

+ mainScreen        Returns the screen object representing the device’s screen.

bounds  property    Contains the bounding rectangle of the screen, measured in points. (read-only)

applicationFrame  property  The frame rectangle for the app window. (read-only)

scale  property   The natural scale factor associated with the screen. (read-only)

[plain]

CGRect bound = [[UIScreen mainScreen] bounds];  // 返回的是带有状态栏的Rect

CGRect frame = [[UIScreen mainScreen] applicationFrame];  // 返回的是不带有状态栏的Rect

float scale = [[UIScreenmainScreen] scale]; // 得到设备的自然分辨率

对于scale属性需要做进一步的说明:

以前的iphone 设备屏幕分辨率都是320*480,后来apple 在iPhone 4中采用了名为Retina的显示技术,iPhone 4采用了960x640像素分辨率的显示屏幕。由于屏幕大小没有变,还是3.5英寸,分辨率的提升将iPhone 4的显示分辨率提升至iPhone 3GS的四倍,每英寸的面积里有326个像素。

scale属性的值有两个:

scale = 1; 的时候是代表当前设备是320*480的分辨率(就是iphone4之前的设备)

scale = 2; 的时候是代表分辨率为640*960的分辨率

判断屏幕类型:

[plain]

// 判断屏幕类型,普通还是视网膜

float scale = [[UIScreen mainScreen] scale];

if (scale == 1) {

bIsRetina = NO;

NSLog(@"普通屏幕");

}else if (scale == 2) {

bIsRetina = YES;

NSLog(@"视网膜屏幕");

}else{

NSLog(@"unknow screen mode !");

}

对dpi和ppi的理解:

DPI是每英寸的点数,可以简单理解为点的密度。

PPI是每英寸的像素数,可以简单理解为像素密度。

点和像素有区别吗?很多时候,一个点 = 一个像素。但是,并不尽然,如iPhone的视网膜屏幕,它一个点包含了四个像素,大大提高了显示清晰度。

使用UIScreen获取的bounds和frame,都是点的尺寸,而非像素尺寸。例如,在视网膜屏的iPhone4上,我获取的applicationFrame大小是320x460,很明显它代表的是点的数量。假如你要显示一张图,如果该图原大小是100x200,那么显示在这样的屏幕上,它的实际显示出来的尺寸将只有原来大小的一半,但它的像素数并未改变。更加需要考虑的是,如果你要对这张图进行缩放,那么缩放率该按照实际显示尺寸计算,还是按照实际像素数计算?这一块很重要,曾走了不少弯路,答案是前者。

时间: 2024-10-10 11:06:48

UIScreen的scale属性的相关文章

iOS - UIScreen的 bound、frame、scale属性

A UIScreen object contains the bounding rectangle of the device's entire screen. When setting up your application's user interface, you should use the properties of this object to get the recommended frame rectangles for your application's window. UI

[[UIScreen mainScreen] scale]详解

[[UIScreen mainScreen] scale]详解 当屏幕分别为640x940时[[UIScreen mainScreen] scale]=2.0 当屏幕分别为320x480时[[UIScreen mainScreen] scale]=1.0 由于iphone 早起的设备都是屏幕分辨率是320*480 后来apple 在iPhone 4中采用了名为Retina的显示技术,iPhone 4采用了960x640像素分辨率的显示屏幕,相当于iPad屏幕78%的像素 .由于屏幕大小没有变化,

[ css zoom和transform属性 ] zoom和transform属性中scale属性值之间的区别讲解及实例演示

IE和Chrome等浏览器与zoom 还在几年前,zoom还只是IE浏览器自己私有的玩具,但是,现在,除了FireFox浏览器,其他,尤其Chrome和移动端浏览器已经很好支持zoom属性了: zoom的字面意思是“变焦”,摄影的时候常用到的一个概念.对于web上的zoom效果,你也可以按照此概念理解.可以改变页面上元素的尺寸,属于真实尺寸. 在旧的web时代.*zoom: 1可以给IE6/IE7浏览器增加haslayout, 用来清除浮动,修复一些布局上的疑难杂症等. 其支持的值类型有: 百分

iOS-Core-Animation-Advanced-Techniques(三)(转)

专用图层 复杂的组织都是专门化的--Catharine R. Stimpson 到目前为止,我们已经探讨过CALayer类了,同时我们也了解到了一些非常有用的绘图和动画功能.但是Core Animation图层不仅仅能作用于图片和颜色而已.本章就会学习其他的一些图层类,进一步扩展使用Core Animation绘图的能力. CAShapeLayer 在第四章『视觉效果』我们学习到了不使用图片的情况下用CGPath去构造任意形状的阴影.如果我们能用同样的方式创建相同形状的图层就好了. CAShap

CoreAnimation3-专用图层

CAShapeLayer CAShapeLayer是一个通过矢量图形而不是bitmap来绘制的图层子类.你指定诸如颜色和线宽等属性,用CGPath来定义想要绘制的图形,最后CAShapeLayer就自动渲染出来了.当然,你也可以用Core Graphics直接向原始的CALyer的内容中绘制一个路径,相比直下,使用CAShapeLayer有以下一些优点: 渲染快速.CAShapeLayer使用了硬件加速,绘制同一图形会比用Core Graphics快很多. 高效使用内存.一个CAShapeLay

iOS Core Animation Advanced Techniques(三):专用图层

到目前为止,我们已经探讨过CALayer类了,同时我们也了解到了一些非常有用的绘图和动画功能.但是Core Animation图层不仅仅能作用于图片和颜色而已.本章就会学习其他的一些图层类,进一步扩展使用Core Animation绘图的能力. CAShapeLayer 在第四章『视觉效果』我们学习到了不使用图片的情况下用CGPath去构造任意形状的阴影.如果我们能用同样的方式创建相同形状的图层就好了. CAShapeLayer是一个通过矢量图形而不是bitmap来绘制的图层子类.你指定诸如颜色

[iOS Animation]-CALayer 专用图层

专用图层 复杂的组织都是专门化的 Catharine R. Stimpson 到目前为止,我们已经探讨过CALayer类了,同时我们也了解到了一些非常有用的绘图和动画功能.但是Core Animation图层不仅仅能作用于图片和颜色而已.本章就会学习其他的一些图层类,进一步扩展使用Core Animation绘图的能力. CAShapeLayer 在第四章『视觉效果』我们学习到了不使用图片的情况下用CGPath去构造任意形状的阴影.如果我们能用同样的方式创建相同形状的图层就好了. CAShape

iOS-Core-Animation之六----专用图层

>复杂的组织都是专门化的 >Catharine R. Stimpson 到目前为止,我们已经探讨过`CALayer`类了,同时我们也了解到了一些非常有用的绘图和动画功能.但是Core Animation图层不仅仅能作用于图片和颜色而已.本章就会学习其他的一些图层类,进一步扩展使用Core Animation绘图的能力. ##CAShapeLayer 在第四章『视觉效果』我们学习到了不使用图片的情况下用`CGPath`去构造任意形状的阴影.如果我们能用同样的方式创建相同形状的图层就好了. `CA

【转】iOS-Core-Animation-Advanced-Techniques(三)

原文: http://www.cocoachina.com/ios/20150105/10827.html 专用图层 复杂的组织都是专门化的--Catharine R. Stimpson 到目前为止,我们已经探讨过CALayer类了,同时我们也了解到了一些非常有用的绘图和动画功能.但是Core Animation图层不仅仅能作用于图片和颜色而已.本章就会学习其他的一些图层类,进一步扩展使用Core Animation绘图的能力. CAShapeLayer 在第四章『视觉效果』我们学习到了不使用图