第1章 Auto Layout介绍 1
1.1 Auto Layout的由来 1
1.2 使用Auto Layout的好处 2
1.2.1 几何关系 3
1.2.2 内容驱动的布局 5
1.2.3 优先级规则 5
1.2.4 检查和模块化 5
1.2.5 与Autosizing兼容 6
1.3 约束 6
1.3.1 可满足性 7
1.3.2 充分性 8
1.4 约束属性 10
1.5 关于那些丢失的视图 11
1.5.1 欠约束导致丢失视图 11
1.5.2 规则不一致导致丢失视图 12
1.5.3 追踪丢失的视图 13
1.6 有歧义的布局 13
1.6.1 纠正有歧义的布局 14
1.6.2 可视化约束 15
1.7 内在内容大小 16
1.8 压缩阻力和内容吸附 17
1.9 图像装饰元素 20
1.9.1 对齐矩形 20
1.9.2 可视化对齐矩形 20
1.9.3 对齐inset 21
1.9.4 声明对齐矩形 23
1.9.5 实现对齐矩形 24
1.10 练习 26
1.11 小结 27
第2章 约束 29
2.1 约束类型 29
2.2 优先级 31
2.2.1 冲突的优先级 31
2.2.2 枚举型优先级 32
2.3 内容大小约束 33
2.3.1 内在内容大小 33
2.3.2 内容吸附 34
2.3.3 压缩阻力 35
2.3.4 通过代码设置内容大小约束 36
2.3.5 在IB中设置内容大小约束 37
2.4 构建布局约束 38
2.5 布局约束类 39
2.5.1 约束数学 39
2.5.2 第一项和第二项 40
2.6 创建布局约束 41
2.6.1 构建NSLayoutConstraint实例 41
2.6.2 一元约束 42
2.6.3 不含视图项的约束是不合法的 43
2.7 视图项 43
2.8 约束、层次结构与边界系统 44
2.9 安装约束 46
2.10 比较约束 50
2.11 布局约束法则 52
2.12 练习 54
2.13 小结 55
第3章 Interface Builder布局 57
3.1 在IB中设计 57
3.2 禁用Auto Layout 58
3.2.1 在代码中退出Auto Layout 59
3.2.2 结合Autosizing和Auto Layout 60
3.3 基本布局以及自动生成的约束 60
3.3.1 推测的约束 61
3.3.2 歧义消除约束 62
3.3.3 尺寸约束 63
3.4 IB元素指南 64
3.4.1 约束列表 69
3.4.2 Xcode标签 70
3.4.3 添加Xcode标识 71
3.5 添加约束 72
3.5.1 拖曳 73
3.5.2 钉固和对齐 75
3.6 预览布局 76
3.7 检查约束 79
3.8 视图的Size Inspector 80
3.8.1 框架矩形和布局矩形 80
3.8.2 其他Size Inspector项 81
3.9 处理菜单 82
3.9.1 更新框架和约束 82
3.9.2 添加和重置约束 82
3.9.3 清理约束 82
3.10 约束/尺寸调整弹出菜单 83
3.10.1 Descendants选项 83
3.10.2 Siblings and Ancestors选项 84
3.11 视图丢失问题 84
3.12 平衡请求 86
3.13 混合布局 88
3.13.1 创建一个用于测试的nib文件 88
3.13.2 在代码中加入nib文件 89
3.13.3 混合布局的优点 91
3.14 移除IB生成的约束 92
3.15 练习 92
3.16 小结 95
第4章 可视化格式 97
4.1 可视化格式约束介绍 97
4.2 选项 99
4.2.1 对齐 100
4.2.2 省略选项 100
4.3 变量绑定 100
4.3.1 间接的问题 101
4.3.2 间接的替代方案 101
4.4 度量 102
4.5 格式字符串结构 103
4.6 方向 104
4.7 视图名称 104
4.8 连接 105
4.8.1 空连接 105
4.8.2 标准间隔 106
4.8.3 数字间隔 107
4.8.4 引用父视图 107
4.8.5 与父视图的间隔 107
4.8.6 灵活间隔 108
4.8.7 圆括号 109
4.8.8 负数 109
4.8.9 优先级 110
4.8.10 多视图 110
4.9 视图尺寸 111
4.10 格式字符串部件 113
4.11 出错 115
4.12 NSLog和可视化格式 115
4.13 约束到父视图 116
4.14 视图拉伸 117
4.15 约束尺寸 118
4.16 创建列或者行 119
4.17 匹配尺寸 120
4.18 为何不能分布视图 121
4.18.1 伪分布视图(第1部分:等中心) 121
4.18.2 伪分布视图(第2部分:间隔视图) 124
4.19 练习 126
4.20 小结 127
第5章 调试约束 129
5.1 Xcode反馈 129
5.1.1 开发反馈 129
5.1.2 编译器反馈 130
5.1.3 运行时 130
5.2 阅读控制台日志 131
5.2.1 示例:自动尺寸调整问题 131
5.2.2 解决方案:关闭自动尺寸调整转换 132
5.2.3 示例:AutoLayout冲突 133
5.2.4 解决方案:调整优先级 134
5.2.5 原子法 134
5.2.6 平衡法 134
5.2.7 追踪歧义 135
5.3 检查约束日志 135
5.3.1 示例:对齐约束 136
5.3.2 示例:标准间隔 136
5.3.3 示例:基于等式的约束 136
5.3.4 示例:复杂等式 137
5.3.5 示例:乘数和常数 138
5.4 布局数学中的一个注意点 138
5.5 约束等式字符串 139
5.6 添加名称 142
5.6.1 使用名称标签 142
5.6.2 命名视图 143
5.7 描述视图 144
5.8 示例:意外的填充 146
5.9 示例:图像吸附 147
5.10 示例:视图居中 148
5.11 向下遍历报告 151
5.12 示例:歧义 152
5.13 示例:控制台输出的扩展 153
5.14 可视化约束 155
5.15 启动参数 156
5.16 国际化 158
5.16.1 加倍的字符串(iOS/OS X) 158
5.16.2 翻转界面(OS X) 159
5.16.3 翻转界面(iOS) 160
5.17 概要分析Cocoa布局 162
5.18 调试中的Auto Layout规则 163
5.19 练习 163
5.20 小结 164
第6章 使用Auto Layout创建 165
6.1 Auto Layout的基本原则 165
6.2 布局库 166
6.3 界面设计 170
6.4 模块化创建 171
6.5 更新约束 173
6.5.1 调用更新并以动画形式显示变化 174
6.5.2 以动画形式显示OS X上的约束变化 175
6.5.3 渐褪变化 175
6.6 边缘条件设计 176
6.7 创建一个视图抽屉 179
6.7.1 创建抽屉布局 181
6.7.2 管理被拖曳视图的布局 184
6.7.3 被拖曳的视图 184
6.8 窗口边界 186
6.9 练习 188
6.10 小结 188
第7章 布局解决方案 191
7.1 表单元格 191
7.2 保存图像纵横比 195
7.3 等宽尺寸 197
7.4 滚动视图 198
7.4.1 滚动视图和纯Auto Layout 199
7.4.2 混合解决方案 199
7.4.3 创建一个分页式图片滚动视图 200
7.5 居中视图组 203
7.6 自定义乘数和随机位置 204
7.7 创建栅格 207
7.8 为键盘留出空间 209
7.9 在运行时插入视图 211
7.10 运动效果、动态文本和容器 213
7.11 练习 214
7.12 小结 214
附录A 练习参考答案 215