第1章 姿势和触摸 1
1.1触摸 1
1.1.1阶段 2
1.1.2触摸和响应者方法 3
1.1.3触摸视图 3
1.1.4多触摸 4
1.1.5姿势识别器 4
1.2秘诀:添加简单的直接操作界面 5
1.3秘诀:添加平移姿势识别器 7
1.4秘诀:同时使用多个姿势识别器 9
1.5秘诀:约束移动 12
1.6秘诀:测试触摸 14
1.7秘诀:针对位图进行测试 16
1.8秘诀:在屏幕上绘制触摸 18
1.9秘诀:平滑绘图 20
1.10秘诀:使用多触摸交互 23
1.11秘诀:检测圆形 27
1.12创建自定义的姿势识别器 31
1.13秘诀:从滚动视图中拖动 33
1.14秘诀:实时触摸反馈 37
1.14.1启用触摸反馈 37
1.14.2截取和转发触摸事件 38
1.14.3实现TOUCHkit叠加视图 39
1.15 秘诀:给视图添加菜单 42
1.16小结 43
第2章 构建和使用控件 45
2.1 UIControl类 45
2.1.1目标—动作 45
2.1.2控件的种类 46
2.1.3控件事件 47
2.2按钮 48
2.3 Interface Builder中的按钮 50
2.4秘诀:构建按钮 51
2.4.1多行按钮文本 53
2.4.2给按钮添加动画式元素 54
2.4.3给按钮添加额外的状态 54
2.5秘诀:制作按钮响应的动画 54
2.6秘诀:添加具有自定义指针的滑块 56
2.6.1自定义UISlider 57
2.6.2提高效率 58
2.7外观代理 61
2.8秘诀:创建可点按两次的分段控件 64
2.8.1第二次点按反馈 65
2.8.2控件和属性 65
2.9处理选项开关和步进器 67
2.10子类化UIControl 68
2.10.1创建控件 69
2.10.2跟踪触摸 69
2.10.3调度事件 69
2.11秘诀:构建星星滑块 72
2.12构建触摸式转盘 75
2.13秘诀:创建拉式控件 78
2.13.1可发现性 79
2.13.2测试触摸 79
2.14构建自定义的锁定控件 82
2.15 添加页面指示控件 84
2.16秘诀:创建可自定义的分页滚动条 87
2.17构建工具栏 92
2.18小结 94
第3章 提醒用户 95
3.1通过警报直接与用户交流 95
3.1.1构建简单的警报 95
3.1.2警报委托 97
3.1.3显示警报 98
3.1.4警报的种类 98
3.2“请等待”:给用户显示进度 99
3.2.1使用UIActivityIndicatorView 99
3.2.2使用UIProgressView 100
3.3秘诀:不带按钮的警报 100
3.4秘诀:利用事件处理循环创建模态警报 104
3.5秘诀:结合使用可变参数与警报视图 106
3.6展示选项列表 107
3.6.1滚动菜单 109
3.6.2在动作表中显示文本 110
3.7秘诀:构建自定义的叠加 110
3.8秘诀:基本的弹出窗口 112
3.9秘诀:本地通知 114
3.10警报指示器 115
3.11秘诀:简单的音频警报 116
3.11.1系统声音 117
3.11.2振动 118
3.11.3警报 118
3.11.4延迟 119
3.11.5系统声音的处理 119
3.12小结 120
第4章 组合视图与动画 123
4.1视图层次结构 123
4.2秘诀:恢复视图层次结构树 125
4.3秘诀:查询子视图 126
4.4管理子视图 128
4.4.1添加子视图 128
4.4.2重新排序和删除子视图 128
4.4.3视图回调 129
4.5标记和检索视图 129
4.6秘诀:通过对象关联命名视图 130
4.7视图几何学 133
4.7.1框架 133
4.7.2矩形实用函数 134
4.7.3点和大小 135
4.7.4变换 135
4.7.5坐标系统 136
4.8秘诀:处理视图框架 136
4.8.1调整大小 137
4.8.2 CGRect和Center 139
4.8.3其他几何元素 140
4.9秘诀:获取变换信息 144
4.9.1获取变换属性 144
4.9.2测试视图交叉 145
4.10显示和交互特征 150
4.11 UIView动画 151
4.12秘诀:淡入和淡出视图 152
4.13交换视图 153
4.14秘诀:翻转视图 154
4.15秘诀:使用Core Animation渐变 156
4.16秘诀:在视图出现时弹起它们 158
4.17图像视图动画 159
4.18小结 160
第5章 视图约束 163
5.1约束是什么 163
5.2对齐矩形 164
5.3约束属性 165
5.4约束的法则 166
5.5创建约束 168
5.5.1基本的约束声明 168
5.5.2可视化的格式约束 169
5.5.3变量绑定 170
5.6格式字符串 170
5.6.1方向 171
5.6.2视图名称 172
5.6.3连接 173
5.7谓词 175
5.7.1指标 176
5.7.2视图之间的谓词 176
5.7.3优先级 176
5.8格式字符串小结 176
5.9存储和更新约束 177
5.10秘诀:比较约束 179
5.11秘诀:描述约束 181
5.12秘诀:创建固定大小的受约束的视图 183
5.12.1禁用自动调整大小约束 184
5.12.2在视图界限内开始 184
5.12.3约束大小 185
5.13秘诀:居中显示视图 187
5.14秘诀:设置高宽比 188
5.15 对齐视图和灵活地调整大小 190
5.16秘诀:响应方向变化 191
5.17约束宏 193
5.17.1一致的约束 193
5.17.2充分的约束 194
5.17.3宏 194
5.18调试约束 196
5.19小结 197
第6章 文本输入 199
6.1秘诀:取消UITextField键盘 199
6.1.1阻止键盘取消 200
6.1.2文本特征属性 200
6.1.3其他文本框属性 201
6.2秘诀:利用自定义的附件视图代替文本视图 203
6.3秘诀:调整键盘周围的视图 205
6.4秘诀:调整附件视图周围的视图 209
6.5秘诀:创建自定义的输入视图 212
6.6秘诀:创建能够意识到文本输入的视图 216
6.7秘诀:向非文本视图中添加自定义的输入视图 219
6.8秘诀:构建更好的文本编辑器(第1部分) 222
6.9秘诀:构建更好的文本编辑器(第2部分) 224
6.9.1启用属性化的文本 224
6.9.2控制属性 225
6.9.3其他的响应者功能 225
6.10秘诀:文本输入过滤 227
6.11秘诀:检测文本模式 230
6.11.1创建你自己的表达式 230
6.11.2枚举正则表达式 231
6.11.3数据检测器 231
6.11.4使用内置的类型检测器 232
6.11.5有用的网站 232
6.12检测UITextView中的拼写错误 234
6.13搜索文本字符串 235
6.14小结 236
第7章 视图控制器的使用 237
7.1视图控制器 237
7.1.1 UIViewController类 238
7.1.2导航控制器 238
7.1.3选项卡栏控制器 238
7.1.4拆分视图控制器 239
7.1.6页面视图控制器 239
7.1.7弹出式控制器 239
7.2使用导航控制器和拆分视图的开发 240
7.2.1使用导航控制器和堆栈 241
7.2.2压入和弹出视图控制器 241
7.2.3栏按钮 242
7.3秘诀:导航项类 242
7.3.1标题和返回按钮 243
7.3.2宏 243
7.4秘诀:模态展示 244
7.5秘诀:构建拆分视图控制器 248
7.6创建通用拆分视图/导航应用 253
7.7秘诀:选项卡栏 255
7.8记忆选项卡状态 259
7.9秘诀:页面视图控制器 262
7.9.1书籍属性 263
7.9.2包装实现 263
7.9.3探索秘诀 265
7.9.4构建展示索引 265
7.10秘诀:在页面视图控制器中刮擦页面 271
7.11秘诀:自定义容器 272
7.11.1添加与移除子视图控制器 273
7.11.2在视图控制器之间过渡 273
7.12秘诀:延续 278
7.13小结 284
第8章 常用控制器 285
8.1图片选取器控制器 285
8.1.1图片源 285
8.1.2在iPhone和iPad上展示选取器 286
8.2秘诀:选择图片 286
8.2.1怎么做:给模拟器添加照片 286
8.2.2 Assets Library(资产库)框架 287
8.2.3展示一个选取器 288
8.2.4处理委托回调 288
8.3秘诀:拍摄照片 293
8.3.1设置选取器 293
8.3.2显示图片 294
8.3.3将图片保存到相簿 294
8.4秘诀:录制视频 296
8.4.1创建视频录制选取器 297
8.4.2保存视频 298
8.5秘诀:使用媒体播放器播放视频 299
8.6秘诀:编辑视频 302
8.7秘诀:选取并编辑视频 305
8.8秘诀:通过邮件发送图片 307
8.9发送文本信息 310
8.10秘诀:贴出社交更新 313
8.11秘诀:活动视图(Activity View)控制器 315
8.11.1创建并展示控制器 316
8.11.2添加服务 319
8.11.3项目和服务 323
8.12秘诀:Quick Look预览控制器 324
8.13小结 328
第9章 可访问性 329
9.1可访问性简介 329
9.2启用可访问性 331
9.3特征(Trait) 332
9.4标签 333
9.5提示 334
9.6使用模拟器测试 334
9.7广播更新 336
9.8在iPhone上测试可访问性 336
9.9小结 338
第10章 创建与管理表格视图 339
10.1 iOS表格 339
10.2委托 340
10.3创建表 341
10.3.1表格风格 341
10.3.2视图布局 341
10.3.3指派数据源 341
10.3.4给单元格提供服务 342
10.3.5注册单元格类 342
10.3.6单元格出列 343
10.3.7指派委托 343
10.4秘诀:实现一个基本的表格 343
10.4.1数据源方法 344
10.4.2响应用户碰触 344
10.5表格视图单元格 347
10.5.1选中的颜色 348
10.5.2添加自定义选择特征 348
10.6秘诀:创建复选表格单元格 348
10.7使用展开附件 351
10.8秘诀:表格编辑 353
10.8.1添加撤销支持 353
10.8.2支持撤销 354
10.8.3显示移除控件 354
10.8.4处理删除请求 355
10.8.5轻扫单元格 355
10.8.6重新排列单元格 355
10.8.7添加单元格 355
10.9秘诀:使用节 360
10.9.1构建节 361
10.9.2节数和行数 362
10.9.3返回单元格 362
10.9.4创建头部标题 364
10.9.5自定义头部和脚注 365
10.9.6创建节索引 365
10.9.7处理节不匹配 366
10.9.8带有节的委托 366
10.10秘诀:搜索表格 368
10.10.1创建搜索显示控制器 369
10.10.2为搜索显示控制器注册单元格 370
10.10.3构建可搜索的数据源方法 370
10.10.4委托方法 372
10.10.5使用搜索感知的索引 372
10.11秘诀:给表格添加下拉刷新功能 374
10.12添加动作行 377
10.13编写自定义组表格的代码 381
10.14秘诀:构建多滚轮表格 382
10.14.1创建UIPickerView 383
10.14.2数据源和委托方法 384
10.14.3结合选取器使用视图 384
10.15 使用UIDatePicker 387
10.16小结 388
第11章 集合视图 391
11.1集合视图与表格的对比 391
11.2建立集合视图 393
11.2.1控制器 393
11.2.2视图 394
11.2.3数据源和委托 394
11.3流布局 394
11.3.1滚动方向 395
11.3.2项目尺寸和线间距 395
11.3.3头部和脚注的尺寸 396
11.3.4嵌空 398
11.4秘诀:基本的集合视图流 398
11.5秘诀:自定义单元格 402
11.6秘诀:滚动水平列表 404
11.7秘诀:引入交互式布局效果 408
11.8秘诀:滚动对齐 410
11.9秘诀:创建圆形布局 411
11.9.1创建与删除的动画 412
11.9.2给圆形布局提供能量 412
11.9.3布局 413
11.10秘诀:给布局添加手势 417
11.11秘诀:创建真正的网格布局 419
11.12秘诀:自定义项目菜单 427
11.13小结 429
第12章 初尝Core Data 431
12.1 Core Data导引 431
12.2实体和模型 431
12.2.1构建一个模型文件 432
12.2.2属性和关系 433
12.2.3构建对象类 433
12.3创建上下文 434
12.4添加数据 435
12.4.1检查数据文件 436
12.4.2查询数据库 438
12.4.3设置提取请求 439
12.4.4执行提取 439
12.5移除对象 440
12.6秘诀:使用Core Data作为表格数据源 441
12.6.1索引路径访问 441
12.6.2节键路径 442
12.6.3节组 442
12.6.4索引标题 442
12.6.5表格的备妥程度 442
12.7秘诀:搜索表格和Core Data 445
12.8给Core Data表格视图添加编辑功能 448
12.8.1添加撤消/重做支持 448
12.8.2创建撤销事务 449
12.8.3重新思考编辑 450
12.9秘诀:由Core Data提供能量的集合视图 455
12.10小结 461
第13章 网络基础 463
13.1秘诀:检查网络状态 463
13.2扫描连接性更改 466
13.3秘诀:同步下载 468
13.4秘诀:异步下载 473
13.5一次调用无反馈异步下载 479
13.6秘诀:使用JSON序列化 480
13.7秘诀:将XML转换成树 482
13.7.1树 483
13.7.2构建分析树 483
13.8小结 486
附录A Objective-C文字常量 487
A.1数字 487
A.2装箱 488
A.3枚举 488
A.4容器文字常量 489
A.5下标 490
A.6功能测试 490