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.0,1点等于一个像素。对于视网膜显示器,比例因子是2.0 ,1点是由四个像素来表示。
上面说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在线计算器:入口
例如小米手机2的PPI计算为:
注意: 对iOS开发人员,iPhone界面上元素的定位都是通过一个固定的单位point(简称pt),而非像素(px)。也就是说开发任务在代码中定位是以pt为单位的。pt和px之间有一定的换算比例:
在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关于单倍图和二倍图(导航 背景 变高)
- IOS开发 iphone手机屏幕相关知识
- iOS开发 -- iPhone手机屏幕尺寸
- iphone手机屏幕开发尺寸
- IOS 开发相关知识收集
- iOS开发经验相关知识
- iPhone破解相关知识
- Iphone相关知识二
- iOS 关于蓝牙开发的相关知识
- iOS 关于蓝牙开发的相关知识
- IOS开发学习记录----计算机相关知识
- 如何开发或者迁移iphone 来适应iphone 5 手机屏幕?
- iOS开发入门教程 iPhone开发相关学习资料
- IPhone的相关知识一
- 涉及Android手机屏幕适配的相关知识
- iOS开发如何禁止手机屏幕旋转
- iPhone开发相关笔记
- iPhone 开发相关
- iOS 网络相关知识
- chapter 4第一部分
- 获取一个整型数组前三个最大的值
- Algorithm学习笔记 --- DNAsorting
- hadoop-2.2.0伪分布式与(全分布集群安装于配置续,很详细的哦~)
- 面向对象——多态
- IOS开发 iphone手机屏幕相关知识
- shell算数运算
- 并发update/update引起的buffer busy wait
- window上使用cygwin编译c及cygwin安装
- VC 查找目录中是否已经存在该文件
- 数据结构基础(14)------------归并排序
- LayoutInflater和inflate()方法的用法
- poj-2115 C Looooops(扩展欧几里得)
- 探索推荐引擎内部的秘密 - 推荐引擎初探