iOS分辨率相关

概述

iOS开发中,UXD中经常出现px、pt、sp、dp,以及@2x、@3x图片素材,都被搞糊涂了,这几天总结了下。

pt(点)

[UIScreen mainScreen].bounds以及frame.size.width等得出的都是pt,是Apple虚拟出的单位,主要用来描述iOS开发中的各个控件的坐标定位与大小
注意:iOS中的pt与photoshop中的pt不是一种东西,有不少说1pt=1/72的,这个跟iOS不是一回事,是印刷行业里的,具体参照关于 iOS 中 pt 的误解

px(像素)

像素。从iPhone 4开始,手机大小没有变,但是其中图像看着更细腻了,主要是因为px的原因。iPhone 3GS为320X480,而iPhone 4变为640 * 960,即从iPhone 3开始的1pt=1px,变为iPhone 4的1pt = 2px,单位英寸上像素更多了

@2x,@3x

假设有一张20px * 30px的图片image.png,在iPhone 3GS上会占据20X30个点,而在iPhone 4上仍然占据20 * 30个点,但是由于iPhone 4每个点包含的像素更多1pt=2px,因此图片会看起来更模糊,这时就需要有像素更多的图片40px * 60px来占据iPhone 4上20 * 30个点,此时这个图片就是[email protected]
备注:[email protected],添加到Xcode中Assets.xcassets中,[email protected]会自动添加到image图片的2x中,此时获取image.frame.size为(20 , 30),如果手动将[email protected]图片从2x拖动到1x中,此时获取image.frame.size为(40 , 60),因此添加到Xcode中的图片不要随意的改变对应的1x,2x,3x位置

iOS分辨率相关_第1张图片
1x,2x,3x

备注: [UIScreen mainScreen].scale可获取屏幕的比例因子,iPhone 3GS 为1;iPhone 4/5/6/6s等为2

ppi

pixel per inch,每英寸多少像素。iPhone 3GS 320px * 480px,3.5寸屏幕,因此ppi为165;同样,iPhone 4为330,因此,如果用在iPhone 3GS上的图片像素为20 * 30,名称为image.png,在iPhone 4上同样的图片像素为40 * 60,名称为[email protected]

dp

安卓中的单位,意义与iOS中的pt相同,都是独立像素,都是为了避免ppi改变导致控件尺寸变化而产生的

sp

安卓字体的单位,与dp相似

iOS字体大小

iOS设置字体大小,例如label.font = [UIFont systemFontOfSize:30];,代码中设置字体大小为30,单位为pt,此时label中如果是中文,每个汉字的大小为30pt * 30 pt;如果是英文,则是15pt * 30pt(width * height)

iOS分辨率相关_第2张图片
分辨率相关

参考

  1. iPhone屏幕适配,历史及现状
  2. 关于 iOS 中 pt 的误解
  3. iOS屏幕尺寸和分辨率

你可能感兴趣的:(iOS分辨率相关)