从iPhone 6 开始 iOS 的 UI 设计方式更像 web 而不是 app,不同尺寸的 iPhone 上 UI 的结构是一样的,各 UIView 的位置尺寸会有所不同。比如同样的一段文本,iPhone 5S 上要显示5行, iPhone 6 Plus 上可能只要三行,显示它们的 UITextView 的尺寸就会不同。苹果从 iOS 6 开始提供了 Auto Layout ,(
Auto Layout Guide: Introduction),他的作用类似 web 中的 CSS,可以用排版语言对 UIView 进行布局,我们只要表达出 UIView 应该靠左、靠右、居中、边距多少等信息,Auto Layout 根据设备尺寸自动计算各 UIView 的 frame。以前 UI 设计喜欢用绝对定位,因为 iPhone 6 之前所有 iPhone 的宽度都是 320 points(注意,不是 pixels),从 iPhone 6 开始将有不同的尺寸(所以叫 Resizeable iPhone),如果用绝对定位就需要针对每种设备做调整,设计师会骂娘的。
还有就是 app 的 Launch Image,因为设备尺寸增多,再结合横屏竖屏,导致的结果是一个 app 要有 n 多个 Launch Image,iOS 8 开始提供了 Launch Screen 的概念,现在可以用一个 xib 文件来作为 Launch Screen,然后用 Interface Builder 对 Launch Screen 进行设计,因为可以使用 Auto Layout,所以我们只需要一个 xib 文件都可以应对所有尺寸的 iPhone。
以前一直觉得 iOS 的 UI 开发不如 Android,通过手工计算 frame 位置来布局简直是石器时代的做法,现在 iPhone 虽然尺寸变多了,不过因为有了成熟的 Auto Layout, UI 的设计和开发变的反而比以前更容易。