IOS开发 iphone手机屏幕相关知识

来源:互联网 发布:仿今日头条 php 编辑:程序博客网 时间:2024/05/21 08:54

//获得状态栏下面的尺寸大小 即app的尺寸

    CGRect rect = [[UIScreenmainScreen]applicationFrame];

    

    NSLog(@"x = %.f,y = %.f, width = %.f, height = %.f",rect.origin.x,rect.origin.y,rect.size.width,rect.size.height);


3.5英寸

x = 0,y = 20, width = 320, height = 460


可知状态栏大小为20 

去掉状态栏 的app尺寸为320 * 460

整个屏幕大小为 320 * 480


4英寸

x = 0,y = 20, width = 320, height = 548


去掉状态栏 的app尺寸为320 * 548

整个屏幕大小为 320 * 568


//整个屏幕的大小,以点为单位。

   CGRect rectx = [[UIScreenmainScreen]bounds];

    

    NSLog(@"x = %.f,y = %.f, width = %.f, height = %.f",rectx.origin.x,rectx.origin.y,rectx.size.width,rectx.size.height);


以4英寸为例,得到:

x = 0,y = 0, width = 320, height = 568


//获得状态栏大小

    CGRect stateRect = [[UIApplicationsharedApplication]statusBarFrame];

    

   NSLog(@"x = %.f,y = %.f, width = %.f, height = %.f",stateRect.origin.x,stateRect.origin.y,stateRect.size.width,stateRect.size.height);


得到状态栏坐标和大小:

x = 0,y = 0, width = 320, height = 20


 //得到设备的分辨率比例

   CGFloat scale = [[UIScreenmainScreen]scale];

    

   NSLog(@"%.f",scale);


以下部分资料摘自:http://blog.csdn.net/fww330666557/article/details/11918539


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


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

scale属性的值有两个:

scale = 1; 的时候是代表当前设备是320*480的分辨率(就是iphone4之前的设备),1点等于一个像素

scale = 2; 的时候是代表分辨率为640*960的分辨率 视网膜屏,即Retina屏1点等于4个像素


 这是对scale的解释 For standard-resolution displays, the scale factor is 1.0 and one point equals one pixel. For Retina displays, the scale factor is 2.0 and one point is represented by four pixels.

意思是:对于标准清晰度显示器,比例因子为1.01点等于一个像素。对于视网膜显示器,比例因子是2.01点是由四个像素来表示。


上面说1点是4个像素 是 横向2*纵向2


 而以下资料是说1点是2个像素 ,应该只是算横向或纵向


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

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

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

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


以下资料摘自:http://blog.163.com/fuxiaohui@126/blog/static/1317458262013564113016/




物理尺寸:指屏幕对角线的尺寸,一般用英寸(inch)来表示。

分辨率:是指单位长度内包含的像素点的数量。例如,以分辨率为1024×768的屏幕来说,即每一条水平线上包含有1024个像素点,共有768条线,即扫描列数为1024列,行数为768行。描述分辨率的单位有DPI(点每英寸)、LPI(线每英寸)和PPI(像素每英寸)。

PPI计算公式

                                        X:长度像素数;Y:宽度像素数;Z:屏幕物理大小)

      

       分享一个PPI在线计算器:入口

例如小米手机2PPI计算为:


      

注意 iOS开发人员,iPhone界面上元素的定位都是通过一个固定的单位point(简称pt),而非像素(px)。也就是说开发任务在代码中定位是以pt为单位的。ptpx之间有一定的换算比例:

HVGA显示技术下: 1pt = 1px

Retina显示技术下: 1pt = 2px


以下摘自:http://www.zhihu.com/question/20583941


问一:只是分辨率不一样的情况,如iPhone3gs和iPhone4s,iPhone4s 和 iPhone 5相比,开发时提供两种分辨率就可以了,应用自动识别?


答:在 iPhone 5 跟 iPod Touch 5 没出之前,对于开发者来说,iPhone3gs和iPhone4s就是分辨率不同的区别而已,因为他们都是3.5寸的屏幕。并且,你细心的话会注意到,iPhone3gs和iPhone4s 他们的分辨率是成倍的关系。

这给 iOS 的设计和开发都提供了方便,界面设计只需要设计一套,然后进行等比例放大缩小即可。


为了方便开发人员开发,iOS 中统一使用点(Point)对界面元素的大小进行描述。

所以对于iPhone3gs和iPhone4s,只需把屏幕大小都当成 320 x 480点 进行开发即可,点跟像素的换算关系如下:

普屏 1点 = 1像素 

Retina屏 1点 = 2像素 

iPad 上的开发也是这样,只需根据 768 x 1136点 进行开发即可。


而在 iPhone 5 机器上,对于开发者来说,它的界面大小就是 320 x 568点,你只需根据这个大小去调整你的界面(如果需要调整的话)。

比如:我有一个按钮,要放在屏幕中间的位置,那么在界面大小为 320 x 480点 的设备上,只需设置它的 center 为 (320/2, 480/2) 位置即可,在 3:2 Retina 屏上系统这个按钮也可以正确的显示在中间;

而在屏幕大小为 320 x 568点 的设备上,你就设置它的 center 为 (320/2, 568/2)。

直接通过 [[UIScreen mainScreen] bounds] 即可获取到当前屏幕的基础分辨率


问二:只是尺寸不一样的情况,如ipad2和ipad mini相比,开发时完全没有影响?


答:开发时只需要关注分辨率即可,iPad 2 跟 iPad mini 屏幕尺寸不同,但是分辨率一致,所以完全没有影响,在 iPad 2 上可正常跑的 app,在 iPad mini 上也可正常跑。



以下是扩展阅读有关@2x图


ios屏幕兼容 phone4和iphone5的屏幕尺寸不同,在程序中兼容


iphone关于单倍图和二倍图(导航 背景 变高)

0 0
原创粉丝点击