一、目录介绍
目 录
第1章 欢迎来到iPhone世界 1
1.1 关于本书 1
1.2 必要条件 1
1.2.1 开发者的选择 3
1.2.2 必备知识 4
1.3 编写iOS应用程序有何不同 4
1.3.1 只有一个应用程序正在运行 5
1.3.2 只有一个窗口 5
1.3.3 受限访问 5
1.3.4 有限的响应时间 5
1.3.5 有限的屏幕大小 5
1.3.6 有限的系统资源 6
1.3.7 不支持垃圾收集 6
1.3.8 新功能 6
1.3.9 与众不同的方法 7
1.4 本书内容 7
1.5 本次更新的内容 8
1.6 准备开始吧 8
第2章 创建基本项目 9
2.1 在Xcode中设置项目 9
2.2 Interface Builder简介 14
2.2.1 nib文件的构成 15
2.2.2 在视图中添加标签 16
2.2.3 改变属性 18
2.3 美化iPhone应用程序 19
2.4 小结 22
第3章 处理基本交互 23
3.1 MVC范型 23
3.2 创建项目 24
3.3 创建视图控制器 24
3.3.1 输出口 25
3.3.2 操作 26
3.3.3 将操作和输出口添加到视图控制器 27
3.3.4 将操作和输出口添加到实现文件 30
3.4 使用应用程序委托 34
3.5 编辑MainWindow.xib 36
3.6 编辑Button_FunViewController.xib 37
3.6.1 在Interface Builder中创建视图 37
3.6.2 连接所有元素 40
3.6.3 测试 43
3.7 小结 43
第4章 更丰富的用户界面 44
4.1 满是控件的屏幕 44
4.2 活动和被动控件 46
4.3 创建应用程序 46
4.4 实现图像视图和文本字段 47
4.4.1 确定输出口 47
4.4.2 确定操作 48
4.4.3 添加图像视图 49
4.4.4 添加文本字段 52
4.4.5 设置第二个文本字段的属性 55
4.4.6 连接输出口 55
4.5 关闭键盘 55
4.5.1 完成输入后关闭键盘 56
4.5.2 通过触摸背景关闭键盘 57
4.6 实现滑块和标签 59
4.6.1 确定输出口和操作 59
4.6.2 添加输出口和操作 60
4.6.3 添加滑块和标签 61
4.6.4 连接操作和输出口 62
4.7 实现开关、按钮和分段控件 62
4.7.1 添加输出口和操作 62
4.7.2 添加开关、按钮和分段控件 65
4.7.3 连接开关输出口和操作 66
4.7.4 添加按钮 66
4.8 实现操作表和警报 67
4.8.1 遵从操作表委托方法 67
4.8.2 显示操作表 68
4.8.3 使用操作表委托 70
4.9 美化按钮 71
4.9.1 viewDidLoad方法 71
4.9.2 控件状态 72
4.9.3 可拉伸图像 72
4.10 成为出色的内存使用者 73
4.11 小结 74
第5章 自动旋转和自动调整大小 75
5.1 自动旋转机制 75
5.2 使用自动调整属性处理旋转 77
5.2.1 指定旋转支持 77
5.2.2 使用自动调整属性设计界面 79
5.2.3 大小检查器的自动调整属性 80
5.2.4 设置按钮的自动调整属性 81
5.3 在旋转时重构视图 82
5.3.1 声明和连接输出口 83
5.3.2 在旋转时移动按钮 84
5.4 切换视图 85
5.4.1 确定输出口和操作 86
5.4.2 声明操作和输出口 87
5.4.3 设计两个视图 88
5.4.4 实现交换和操作 88
5.5 小结 91
第6章 多视图应用程序 92
6.1 多视图应用程序的常见类型 92
6.2 多视图应用程序的体系结构 94
6.2.1 根控制器 95
6.2.2 内容视图剖析 96
6.3 构建View Switcher 96
6.3.1 创建视图控制器和nib文件 97
6.3.2 修改应用程序委托 99
6.3.3 SwitchViewController.h 101
6.3.4 添加视图控制器 101
6.3.5 构建包含工具栏的视图 103
6.3.6 编写根视图控制器 104
6.3.7 实现内容视图 108
6.3.8 制作转换动画 110
6.4 小结 113
第7章 标签栏与选取器 114
7.1 Pickers应用程序 114
7.2 委托和数据源 117
7.3 建立工具栏框架 117
7.3.1 创建文件 117
7.3.2 添加根视图控制器 118
7.3.3 编辑MainWindow.xib 120
7.3.4 连接输出口,然后运行 123
7.4 实现日期选取器 124
7.5 实现单个组件选取器 126
7.5.1 声明输出口和操作 126
7.5.2 构建视图 127
7.5.3 将控制器实现为数据源和委托 127
7.6 实现多组件选取器 131
7.6.1 声明输出口和操作 131
7.6.2 构建视图 132
7.6.3 实现控制器 132
7.7 实现独立组件 135
7.8 使用自定义选取器创建简单游戏 141
7.8.1 编写控制器头文件 141
7.8.2 构建视图 142
7.8.3 添加图像资源 143
7.8.4 实现控制器 143
7.8.5 最后的细节 149
7.8.6 链接Audio Toolbox框架 153
7.9 小结 154
第8章 表视图简介 155
8.1 表视图基础 156
8.1.1 表视图和表视图单元 156
8.1.2 分组表和无格式表 157
8.2 实现一个简单的表 158
8.2.1 设计视图 158
8.2.2 编写控制器 158
8.2.3 添加一个图像 161
8.2.4 表视图单元样式 163
8.2.5 设置缩进级别 165
8.2.6 处理行的选择 165
8.2.7 更改字体大小和行高 167
8.3 定制表视图单元 168
8.3.1 单元应用程序 168
8.3.2 使用UITableViewCell的自定义子类 172
8.4 分组分区和索引分区 176
8.4.1 构建视图 176
8.4.2 导入数据 177
8.4.3 实现控制器 177
8.4.4 添加索引 181
8.5 实现搜索栏 181
8.5.1 重新考虑设计 181
8.5.2 深层可变副本 182
8.5.3 更新控制器头文件 184
8.5.4 修改视图 185
8.5.5 修改控制器实现 186
8.6 小结 197
第9章 导航控制器和表视图 198
9.1 导航控制器 198
9.1.1 栈的性质 198
9.1.2 控制器栈 199
9.2 由6个部分组成的分层应用程序:Nav 200
9.2.1 子控制器 200
9.2.2 Nav应用程序的骨架 203
9.2.3 第一个子控制器:展示按钮视图 209
9.2.4 第二个子控制器:校验表 217
9.2.5 第三个子控制器:表行上的控件 221
9.2.6 第四个子控制器:可移动的行 227
9.2.7 第五个子控制器:可删除的行 233
9.2.8 第六个子控制器:可编辑的详细窗格 239
9.2.9 其他内容 257
9.3 小结 260
第10章 iPad开发注意事项 261
10.1 分割视图和浮动窗口 261
10.2 创建SplitView项目 263
10.3 xib定义结构 264
10.4 代码定义功能 265
10.5 显示总统信息 272
10.6 创建浮动窗口 276
10.7 小结 282
第11章 应用程序设置和用户默认设置 283
11.1 设置束 283
11.2 AppSettings应用程序 284
11.2.1 创建项目 286
11.2.2 使用设置束 286
11.2.3 读取应用程序中的设置 297
11.2.4 更改应用程序中的默认设置 302
11.2.5 实现逼真效果 305
11.3 小结 307
第12章 保存数据 308
12.1 应用程序的沙盒 308
12.1.1 获取Documents目录 309
12.1.2 获取tmp目录 310
12.2 文件保存策略 310
12.2.1 单个文件持久性 310
12.2.2 多个文件持久性 311
12.3 属性列表 311
12.3.1 属性列表序列化 311
12.3.2 持久性应用程序的第一个版本 312
12.4 对模型对象进行归档 317
12.4.1 符合NSCoding 318
12.4.2 实现NSCopying 319
12.4.3 对数据对象进行归档和取消归档 319
12.4.4 归档应用程序 320
12.5 使用iPhone的嵌入式SQLite3 324
12.5.1 创建或打开数据库 325
12.5.2 绑定变量 327
12.5.3 SQLite3应用程序 327
12.6 使用Core Data 334
12.6.1 实体和托管对象 335
12.6.2 Core Data应用程序 339
12.7 小结 348
第13章 Grand Central Dispatch、后台处理及其应用 349
13.1 Grand Central Dispatch 349
13.2 SlowWorker简介 350
13.3 线程基础知识 352
13.4 工作单元 353
13.5 GCD:低级队列 354
13.5.1 傻瓜式操作 354
13.5.2 改进SlowWorker 355
13.6 后台处理 360
13.6.1 应用程序生命周期 361
13.6.2 状态更改通知 361
13.6.3 创建State Lab 363
13.6.4 执行状态 364
13.6.5 利用执行状态更改 365
13.6.6 处理不活动状态 366
13.6.7 处理后台状态 370
13.7 小结 378
第14章 使用Quartz和OpenGL绘图 379
14.1 图形世界的两个视图 379
14.2 Quart绘图方法 380
14.2.1 Quartz 2D的图形上下文 380
14.2.2 坐标系 381
14.2.3 指定颜色 382
14.2.4 在上下文中绘制图像 383
14.2.5 绘制形状:多边形、直线和曲线 383
14.2.6 Quartz 2D工具示例:模式、梯度、虚线模式 384
14.3 QuartzFun应用程序 384
14.3.1 构建QuartzFun应用程序 384
14.3.2 添加Quartz Drawing代码 394
14.3.3 优化QuartzFun应用程序 398
14.4 GLFun应用程序 401
14.4.1 构建GLFun应用程序 402
14.4.2 使用OpenGL绘图 404
14.4.3 完成GLFun 411
14.5 小结 411
第15章 轻击、触摸和手势 412
15.1 多触摸术语 412
15.2 响应者链 413
15.2.1 响应者链中的对象 413
15.2.2 转发事件:保持响应者链的活动状态 414
15.3 多触摸体系结构 415
15.3.1 将触摸相关代码放在何处 415
15.3.2 4个手势通知方法 415
15.4 检测触摸 416
15.4.1 构建一个Touch Explorer应用程序 417
15.4.2 运行Touch Explorer 419
15.5 检测轻扫 419
15.5.1 构建Swipes应用程序 420
15.5.2 使用自动手势识别 423
15.5.3 实现多个轻扫动作 424
15.6 检测多次轻击 425
15.7 检测捏合操作 430
15.8 创建和使用自定义手势 433
15.8.1 定义选中标记手势 433
15.8.2 将勾选标记手势附加到视图 435
15.9 小结 437
第16章 Core Location定位功能 438
16.1 位置管理器 438
16.1.1 设置所需的精度 439
16.1.2 设置距离筛选器 439
16.1.3 启动位置管理器 439
16.1.4 更明智地使用位置管理器 440
16.2 位置管理器委托 440
16.2.1 获取位置更新 440
16.2.2 使用CLLocation获取纬度和经度 440
16.2.3 错误通知 442
16.3 尝试使用Core Location 442
16.3.1 更新位置管理器 446
16.3.2 确定移动距离 447
16.4 小结 447
第17章 加速计 448
17.1 加速计物理学 448
17.2 不要忘记旋转 449
17.3 Core Motion和动作管理器 449
17.3.1 基于事件的动作 450
17.3.2 主动动作访问 455
17.3.3 加速计结果 457
17.4 检测摇动 458
17.4.1 Baked-In摇动 459
17.4.2 摇动与击碎 459
17.5 将加速计用作方向控制器 464
17.5.1 滚弹珠程序 464
17.5.2 编写Ball View 466
17.5.3 计算小球运动 469
17.6 小结 472
第18章 iPhone照相机和照片库 473
18.1 使用图像选取器和UIImagePicker-Controller 474
18.2 实现图像选取器控制器委托 475
18.3 实际测试照相机和库 476
18.3.1 设计界面 477
18.3.2 实现照相机视图控制器 477
18.4 小结 481
第19章 应用程序本地化 482
19.1 本地化体系结构 482
19.2 字符串文件 483
19.2.1 字符串文件里面是什么 484
19.2.2 本地化的字符串宏 484
19.3 现实中的iPhone:本地化应用程序 485
19.3.1 创建LocalizeMe 485
19.3.2 测试LocalizeMe 489
19.3.3 本地化nib文件 489
19.3.4 本地化图像 492
19.3.5 生成和本地化字符串文件 493
19.3.6 本地化应用程序显示名称 495
19.4 小结 496
第20章 未来之路 497
20.1 别陷进单一的思路里 497
20.1.1 苹果公司的文档 497
20.1.2 邮件列表 498
20.1.3 论坛 498
20.1.4 网站 499
20.1.5 博客 499
20.2 参考资料 500
20.3 作者 501
20.4 再会 501
��