Nib 布局配置全解析
1. 约束优先级的理解
在布局中,理解约束优先级至关重要。可以想象所有约束被放在不同的盒子里,每个盒子代表一个优先级,且按优先级从高到低排列。运行时会按照这些约束进行布局,具体步骤如下:
- 首先处理优先级为 1000(.required)的盒子,这里面包含所有必需的约束。如果这些约束有冲突,会在日志中报告。
- 若仅依据必需约束还无法完成明确的布局,就从下一个盒子中取出约束尝试应用。若能与之前的操作保持一致,就没问题;若不能,或者仍存在歧义,就继续查看下一个盒子,以此类推。
- 对于第一个盒子之后的盒子,不必严格遵守其中的约束。例如,不等式存在歧义,因为有无数个值能满足它;低优先级的等式可以给出一个优先值来解决歧义,即使无法完全达到这个优先值,也不会产生冲突。
2. 在 Nib 中配置布局
通常,在代码中配置布局并非必要,使用 Nib 编辑器配置布局是个强大的方式,虽然它不能完全替代代码,但在很多情况下已足够,不足之处还可以用代码补充。
2.1 文件检查器中的布局选项
当选择 .storyboard 或 .xib 文件时,在文件检查器中有三个与布局相关的主要选项,通过复选框设置,默认是勾选的,建议保持默认设置:
| 选项 | 说明 |
| ---- | ---- |
| Use Auto Layout | 若不勾选,在 Nib 编辑器中无法创建约束,视图布局需完全使用自动调整大小功能。 |
| Use Trait Variations | 勾选后,Nib 编辑器中的一些设置(如约束常量的值)可根据运行时环境的大小类(“Trait Coll