概念
- pixel:像素点,一个发光点,代码中概念
- pt: point 点 1/72inch px = pt*(ppi/72),屏幕显示的概念
- horizontal: 水平
- vertical: 垂直
- diagonal: 对角线
- scale:缩放因子
- PPI (Pixel Per Inch):每英寸像素点的个数
- DPI(Dots Per Inch):每英寸像素点的个数
- inch:英寸,每英寸等于2.54厘米
- 逻辑像素
- 在编程的时候用的坐标点
- 产生于iPhone3GS,把320*480point显示在320*480pixel屏幕上
- 渲染像素
- 经过GPU放大处理后的像素
- 产生于iPhone4,将逻辑像素放大2倍,把320*480point显示在640*960pixel屏幕上
- 物理像素 (device pixels)
- 经过一系列处理最终显示在屏幕的像素,实际上,缩放因子为2倍的设备的渲染像素就是物理像素,到了Plus系列上才出现了物理像素与渲染像素之分
- 产生于iPhone6P/6sP/7P,从逻辑像素放大3倍,把414*736point转换为1242*2208piexl,再从渲染像素缩小1.15倍,23个像素点放在20个像素点上显示,物理比例是渲染比例的86%,显示在1080*1920分辨率
- 三基色
- 合成其他光最基本的颜色
- 红绿蓝
- 本身发光
- 三原色
- 不发光物体色彩中不能再分解的基本颜色,见英国化学家富博斯特
- 红黄青,教科书上说是红绿蓝,实际上市红黄青
- 本身不发光
- 灰色能够被红黄青合成,但是无论如何黑色不能被合成
- 屏幕分辨率
- DV:480×720
- 视网膜/高清/HD: 720×1280
- 全高清/QHD: 1080×1920
- 2K:1152×2048 (iPhone的Plus系列实际上是达到2K级别了,但是经过1.15倍的缩放之后只有全高清的效果)
- 4K:2160×4096(目前只有索尼Z5P 2015年10月 2560*3860 806ppi 5.2inch)
- 显示技术
- 苹果Retina,即俗称的视网膜显示技术,将更多像素点压缩到屏幕,肉眼无法分辨其单独像素,iPhone/iTouch压缩像素密度达到或高于300ppi不再出现颗粒感;iPad:260ppi,Mac:200ppi
- 苹果双域像素,产生于iPhone6,子像素倾斜排列,产生侧视屏幕得到更广的可视角度
- 三星Pentile,子像素只有红绿排列或者蓝绿排列,临接像素共享另外一个子像素,使得子像素数量缩减1/3,色彩显示效果不减,像素密度得到提高
坐标空间
- 二维空间坐标系
- X轴平行于屏幕,正方向向右
- Y轴平行于屏幕,正方向向下
- 三维空间坐标系
- X轴平行于屏幕,正方向向右
- Y轴平行于屏幕,正方向向下
- Z轴垂直于屏幕,正方向向外,即更靠近用户的视线
适配技术
- iOS 4 –––– Autoresizing
- Autoresizing 的核心思想就是:参照父容器来设置子控件的 frame,不再写死 frame
- 缺陷:Autoresizing 只能控制父子控件之间的位置关系,对于兄弟关系,束手无策
- iOS 6 —— Auto Layout(自动布局)
- 随着 iPhone5 \ iPhone5s 的发布,苹果设备的屏幕尺寸变化越来越多, 不仅要求能控制父子控件的位置关系,也要求能控制任意控件之间的位置关系,Auto Layout产生了
- Auto Layout 主要解决的问题:控件位置的参照关系不再局限于父控件
- iOS 8 —— Size Classes + Auto Layout
- iPhone6 发布以后,为了能更容易的适配不同的屏幕,苹果推出了 Size Classes 技术
- 通过 Auto Layout 设置的约束,各种不同的屏幕都会使用相同的约束
- 通过 Size Classes + Auto Layout, 可以为不同尺寸的屏幕设置不同的约束
例如: 计算器,在iPhone的横屏、竖屏下的不同表现,和在iPhone和iPad下不同的表现 - Size Classes 主要解决的问题: iPhone横竖屏适配及iPhone和iPad开发时共用一个SB的问题
- iOS 9 —— Size Classes + Auto Layout + StackView
- StackView 的核心便是方便垂直或水平排布多个 subview,类似于 android 的 LinearLayout
- StackView 最有用之处是它会自动为每个 subview 创建和添加 Auto Layout 约束,程序员可以
通过选项配置subview的大小、排布以及彼此间的间距 - stackview 主要解决的问题: 简化在线性方向上,重复设置控件布局约束的问题