第1章 为开发准备好系统和iOS设备 1
1.1 欢迎进入iOS平台 1
1.1.1 iOS设备 1
1.1.2 显示屏和图形 2
1.1.3 应用程序资源约束 4
1.1.4 连接性 4
1.1.5 输入和反馈 4
1.2 成为iOS开发人员 5
1.2.1 加入Apple开发人员计划 5
1.2.2 安装Xcode 8
1.3 运行iOS应用 9
1.3.1 什么是开发供应配置文件 10
1.3.2 配置用于开发的设备 10
1.3.3 启动应用 12
1.4 开发技术概述 15
1.4.1 Apple开发工具 15
1.4.2 Swift 15
1.4.3 CoCoa Touch 15
1.4.4 模型-视图-控制器 16
1.5 进一步探索 16
1.6 小结 16
1.7 问与答 16
1.8 作业 17
第2章 Xcode和iOS模拟器简介 20
2.1 使用Xcode 20
2.1.1 创建和管理项目 21
2.1.2 编辑和导航代码 30
2.1.3 生成应用程序 37
2.1.4 管理项目属性 42
2.1.5 设置支持的设备朝向 43
2.1.6 应用程序图标、启动图像和启动屏幕 43
2.2 使用iOS模拟器 46
2.2.1 启动应用程序 47
2.2.2 模拟多点触摸事件 48
2.2.3 旋转模拟的设备 49
2.2.4 模拟其他情况 50
2.2.5 添加其他要模拟的设备 51
2.3 进一步探索 52
2.4 小结 52
2.5 问与答 52
2.6 作业 53
第3章 探索Swift和iOS试验场 56
3.1 面向对象编程和Swift 56
3.2 面向对象编程术语 58
3.3 探索Swift文件结构 59
3.3.1 类文件 60
3.3.2 自动生成的结构 64
3.4 Swift编程基础 65
3.4.1 声明变量和常量 65
3.4.2 使用方法 73
3.4.3 表达式和决策 76
3.5 内存管理和自动引用计数 80
3.6 iOS试验场简介 80
3.6.1 新建试验场 81
3.6.2 使用试验场 82
3.6.3 生成并查看输出 83
3.7 进一步探索 84
3.8 小结 84
3.9 问与答 84
3.10 作业 85
第4章 Cocoa Touch内幕 88
4.1 Cocoa Touch是什么 88
4.1.1 冷静面对大量的功能 89
4.1.2 少年老成 90
4.2 探索iOS技术层 90
4.2.1 Cocoa Touch层 90
4.2.2 多媒体层 91
4.2.3 核心服务层 93
4.2.4 核心OS层 94
4.3 跟踪iOS应用程序的生命周期 95
4.4 Cocoa基础 96
4.4.1 核心应用程序类 96
4.4.2 数据类型类 98
4.4.3 界面类 100
4.5 使用Xcode探索iOS框架 102
4.5.1 Xcode文档 103
4.5.2 快速帮助 106
4.6 进一步探索 108
4.7 小结 108
4.8 问与答 109
4.9 作业 109
第5章 探索Xcode Interface Builder 112
5.1 了解Interface Builder 112
5.1.1 IB采用的方法 113
5.1.2 剖析IB故事板 113
5.2 创建用户界面 117
5.2.1 对象库 118
5.2.2 将对象加入到视图中 119
5.2.3 使用IB编辑工具 120
5.2.4 自动布局系统 123
5.3 定制界面外观 125
5.3.1 使用属性检查器 125
5.3.2 设置辅助功能属性 126
5.3.3 预览界面 128
5.4 连接到代码 130
5.4.1 打开项目 130
5.4.2 实现概述 131
5.4.3 输出口和操作 132
5.4.4 对象身份 136
5.5 进一步探索 137
5.6 小结 137
5.7 问与答 138
5.8 作业 138
第6章 模型-视图-控制器应用程序设计 141
6.1 了解设计模式MVC 141
6.1.1 制作意大利面条式代码 142
6.1.2 使用MVC将应用程序设计结构化 142
6.2 Xcode如何实现MVC 143
6.2.1 视图 143
6.2.2 视图控制器 143
6.2.3 数据模型 145
6.3 使用模板Single View Application 146
6.3.1 实现概述 146
6.3.2 创建项目 147
6.3.3 规划变量和连接 150
6.3.4 设计界面 152
6.3.5 创建并连接输出口和操作 155
6.3.6 实现应用程序逻辑 159
6.3.7 生成应用程序 159
6.4 进一步探索 160
6.5 小结 160
6.6 问与答 160
6.7 作业 161
第7章 使用文本、键盘和按钮 164
7.1 基本用户输入和输出 164
7.1.1 按钮 164
7.1.2 文本框和文本视图 165
7.1.3 标签 165
7.2 使用文本框、文本视图和按钮 166
7.2.1 实现概述 166
7.2.2 创建项目 167
7.2.3 使用切割技术制作按钮模板 167
7.2.4 设计界面 171
7.2.5 创建并连接输出口和操作 181
7.2.6 隐藏键盘 183
7.2.7 实现应用程序逻辑 186
7.2.8 生成应用程序 187
7.3 进一步探索 188
7.4 小结 188
7.5 问与答 188
7.6 作业 189
第8章 处理图像、动画、滑块和步进控件 192
8.1 用户输入和输出 192
8.1.1 滑块 192
8.1.2 步进控件 193
8.1.3 图像视图 193
8.2 创建并管理图像动画、滑块和步进控件 194
8.2.1 实现概述 194
8.2.2 创建项目 195
8.2.3 设计界面 196
8.2.4 创建并连接到输出口和操作 202
8.2.5 实现应用程序逻辑 205
8.2.6 生成应用程序 211
8.3 进一步探索 211
8.4 小结 212
8.5 问与答 212
8.6 作业 212
第9章 使用高级界面对象和视图 215
9.1 再谈用户输入和输出 215
9.1.1 开关 216
9.1.2 分段控件 216
9.1.3 Web视图 217
9.1.4 可滚动的视图 219
9.2 使用开关、分段控件和Web视图 220
9.2.1 实现概述 220
9.2.2 创建项目 221
9.2.3 设计界面 221
9.2.4 创建并连接输出口和操作 226
9.2.5 实现应用程序逻辑 229
9.2.6 生成应用程序 233
9.3 使用可滚动视图 233
9.3.1 实现概述 233
9.3.2 创建项目 234
9.3.3 设计界面 234
9.3.4 创建并连接输出口和操作 238
9.3.5 实现应用程序逻辑 238
9.3.6 生成应用程序 239
9.4 进一步探索 239
9.5 小结 240
9.6 问与答 240
9.7 作业 241
第10章 引起用户注意 244
10.1 提醒用户 244
10.1.1 提醒控制器 245
10.1.2 系统声音服务 251
10.2 探索提醒用户的方法 253
10.2.1 实现概述 253
10.2.2 创建项目 253
10.2.3 设计界面 254
10.2.4 创建并连接输出口和操作 255
10.2.5 实现提醒 257
10.2.6 实现操作表 262
10.2.7 实现提醒音和震动 264
10.3 进一步探索 265
10.4 小结 266
10.5 问与答 266
10.6 作业 266
第11章 实现多场景和弹出框 269
11.1 多场景故事板简介 269
11.1.1 术语 270
11.1.2 创建多场景项目 271
11.1.3 添加提供支持的视图控制器子类 273
11.1.4 创建切换 275
11.1.5 配置模态切换 277
11.1.6 配置弹出切换 278
11.1.7 手工控制模态切换 281
11.1.8 使用出口和回退切换 282
11.1.9 以编程方式创建切换 284
11.1.10 弹出切换的独特之处 286
11.1.11 在场景之间传递数据 288
11.2 使用切换 290
11.2.1 实酬概述 290
11.2.2 创建项目 290
11.2.3 设计界面 293
11.2.4 创建模态切换 296
11.2.5 回退到初始场景 297
11.2.6 创建并连接输出口和操作 297
11.2.7 实现应用程序逻辑 298
11.2.8 生成应用程序 300
11.3 弹出框、通用应用程序和iPhone 300
11.3.1 配置弹出切换 300
11.3.2 改为通用应用程序 301
11.4 进一步探索 304
11.5 小结 304
11.6 问与答 305
11.7 作业 305
第12章 使用工具栏和选择器做出选择 308
12.1 了解工具栏 308
12.2 探索选择器 311
12.2.1 日期选择器 312
12.2.2 选择器视图 313
12.3 使用日期选择器 317
12.3.1 实现概述 317
12.3.2 创建项目 318
12.3.3 设计界面 319
12.3.4 创建切换 321
12.3.5 创建并连接输出口和操作 322
12.3.6 实现日期计算逻辑 322
12.3.7 实现场景切换逻辑 327
12.3.8 生成应用程序 328
12.4 实现自定义选择器 328
12.4.1 实现概述 329
12.4.2 创建项目 329
12.4.3 设计界面 330
12.4.4 创建切换 333
12.4.5 创建并连接输出口和操作 333
12.4.6 实现自定义选择器视图 333
12.4.7 实现场景切换逻辑 339
12.4.8 生成应用程序 340
12.5 进一步探索 341
12.6 小结 341
12.7 问与答 342
12.8 作业 342
第13章 使用导航控制器和选项卡栏控制器 345
13.1 高级视图控制器 345
13.2 探索导航控制器 347
13.2.1 导航栏、导航项和栏按钮项 347
13.2.2 在故事板中使用导航控制器 348
13.2.3 在导航场景之间共享数据 350
13.3 了解选项卡栏控制器 351
13.3.1 选项卡栏和选项卡栏项 351
13.3.2 在故事板中使用选项卡栏控制器 352
13.3.3 在选项卡栏控制器管理的场景之间共享数据 355
13.4 使用导航控制器 355
13.4.1 实现概述 356
13.4.2 创建项目 356
13.4.3 创建显示切换 359
13.4.4 设计界面 361
13.4.5 创建并连接输出口和操作 361
13.4.6 实现应用程序逻辑 362
13.4.7 生成应用程序 363
13.5 使用选项卡栏控制器 364
13.5.1 实现概述 364
13.5.2 创建项目 364
13.5.3 创建选项卡栏关系 366
13.5.4 设计界面 367
13.5.5 创建并连接输出口和操作 368
13.5.6 实现应用程序逻辑 369
13.5.7 生成应用程序 371
13.6 进一步探索 371
13.7 小结 372
13.8 问与答 372
13.9 作业 373
第14章 使用表视图和分割视图控制器导航数据 376
14.1 了解表视图 376
14.1.1 表视图的外观 377
14.1.2 表单元格 377
14.1.3 添加表视图 378
14.2 探索分割视图控制器 383
14.2.1 实现分割视图控制器 384
14.2.2 模板Master-Detail Application 385
14.3 一个简单的表视图应用程序 386
14.3.1 实现概 386
14.3.2 创建项目 387
14.3.3 设计界面 387
14.3.4 连接输出口delegate和dataSource 389
14.3.5 实现应用程序逻辑 389
14.3.6 生成应用程序 393
14.4 创建基于主-从视图的应用程序 393
14.4.1 实现概述 394
14.4.2 创建项目 394
14.4.3 调整界面 395
14.4.4 实现应用程序数据源 398
14.4.5 实现主视图控制器 400
14.4.6 实现细节视图控制器 403
14.4.7 生成应用程序 405
14.5 进一步探索 405
14.6 小结 405
14.7 问与答 406
14.8 作业 406
第15章 读写应用程序数据 409
15.1 iOS应用程序和数据存储 409
15.2 数据存储方式 411
15.2.1 用户默认设置 412
15.2.2 设置束 413
15.2.3 直接访问文件系统 415
15.3 创建隐式首选项 418
15.3.1 实现概述 419
15.3.2 创建项目 419
15.3.3 创建界面 419
15.3.4 创建并连接输出口和操作 420
15.3.5 实现应用程序逻辑 421
15.3.6 生成应用程序 424
15.4 实现系统设置 424
15.4.1 实现概述 425
15.4.2 创建项目 425
15.4.3 设计界面 426
15.4.4 创建并连接输出口 427
15.4.5 创建设置束 427
15.4.6 实现应用程序逻辑 433
15.4.7 生成应用程序 434
15.5 实现文件系统存储 435
15.5.1 实现述 435
15.5.2 创建项目 435
15.5.3 设计界面 435
15.5.4 创建并连接输出口和操作 436
15.5.5 实现应用程序逻辑 438
15.6 进一步探索 441
15.7 小结 442
15.8 问与答 442
15.9 作业 442
第16章 创建自适应用户界面 446
16.1 自适应界面 446
16.1.1 启用界面旋转 447
16.1.2 设计可旋转和调整大小的界面 448
16.2 使用自动布局 450
16.2.1 自动布局的语言和工具 450
16.2.2 在约束对象中导航 452
16.2.3 示例1:居中约束 459
16.2.4 示例2:增大控件 460
16.2.5 示例3:统一调整大小 464
16.3 以编程方式定义界面 467
16.3.1 实现概述 467
16.3.2 创建项目 468
16.3.3 界面编程 468
16.3.4 生成应用程序 472
16.4 进一步探索 472
16.5 小结 472
16.6 问与答 473
16.7 作业 473
第17章 使用复杂的触摸和手势 476
17.1 多点触摸手势识别 476
17.2 添加手势识别器 477
17.3 使用手势识别器 478
17.3.1 实现概述 478
17.3.2 创建项目 480
17.3.3 设计界面 481
17.3.4 给视图添加手势识别器 482
17.3.5 创建并连接输出口和操作 485
17.3.6 实现应用程序逻辑 487
17.3.7 生成应用程序 495
17.4 进一步探索 495
17.5 小结 495
17.6 问与答 496
17.7 作业 496
第18章 检测朝向和移动 499
18.1 理解运动硬件 499
18.1.1 加速计 500
18.1.2 陀螺仪 501
18.2 访问朝向和运动数据 502
18.2.1 通过UIDevice请求朝向通知 502
18.2.2 使用Core Motion读取加速度、旋转速度和姿态 503
18.3 检测朝向 505
18.3.1 实现概述 505
18.3.2 创建项目 505
18.3.3 设计界面 505
18.3.4 创建并连接输出口 506
18.3.5 实现应用程序逻辑 506
18.3.6 生成应用程序 508
18.4 检测加速、倾斜和旋转 509
18.4.1 实现概述 509
18.4.2 创建项目 510
18.4.3 设计界面 510
18.4.4 创建并连接输出口和操作 511
18.4.5 实现应用程序逻辑 512
18.4.6 生成应用程序 517
18.5 进一步探索 518
18.6 小结 518
18.7 问与答 519
18.8 作业 519
第19章 使用多媒体 522
19.1 探索多媒体 522
19.1.1 Media Player框架 523
19.1.2 AV Foundation框架 528
19.1.3 图像选择器 530
19.1.4 Core Image框架 532
19.2 创建用于练习使用多媒体的应用程序 534
19.2.1 实现概述 534
19.2.2 创建项目 534
19.2.3 设计界面 536
19.2.4 创建并连接输出口和操作 536
19.2.5 实现电影播放器 538
19.2.6 实现音频录制和播放 541
19.2.7 使用照片库和相机 545
19.2.8 实现Core Image滤镜 548
19.2.9 访问并播放音乐库 549
19.3 进一步探索 554
19.4 小结 555
19.5 问与答 555
19.6 作业 556
第20章 与其他iOS服务交互 559
20.1 集成iOS服务 559
20.1.1 地址簿 559
20.1.2 电子邮件 562
20.1.3 在社交网站上发表信息 564
20.1.4 地图功能 566
20.2 使用地址簿、电子邮件、社交网络和地图 573
20.2.1 实现概述 573
20.2.2 创建项目 573
20.2.3 设计界面 574
20.2.4 创建并连接输出口和操作 575
20.2.5 实现地址簿逻辑 576
20.2.6 实现地图逻辑 579
20.2.7 实现电子邮件逻辑 582
20.2.8 实现社交网络逻辑 583
20.2.9 将状态栏设置为白色(可选) 585
20.2.10 生成应用程序 585
20.3 进一步探索 586
20.4 小结 586
20.5 问与答 587
20.6 作业 587
第21章 实现定位服务 590
21.1 理解Core Location 590
21.1.1 获取位置 590
21.1.2 获取航向 595
21.2 创建支持定位的应用程序 596
21.2.1 实现概述 596
21.2.2 创建项目 596
21.2.3 设计视图 597
21.2.4 创建并连接输出口 599
21.2.5 实现应用程序逻辑 599
21.2.6 生成应用程序 603
21.3 理解磁性指南针 605
21.3.1 实现概述 605
21.3.2 创建项目 605
21.3.3 修改用户界面 606
21.3.4 创建并连接输出口 607
21.3.5 修改应用程序逻辑 607
21.3.6 生成应用程序 612
21.4 进一步探索 612
21.5 小结 613
21.6 问与答 613
21.7 作业 613
第22章 创建支持后台处理的应用程序 616
22.1 理解iOS后台处理 616
22.1.1 后台处理类型 617
22.1.2 支持后台处理的应用程序的生命周期 619
22.2 禁用后台处理 621
22.3 处理后台挂起 622
22.4 实现本地通知 623
22.4.1 请求用户允许用通知 623
22.4.2 常用的通知属性 623
22.4.3 创建和调度通知 624
22.5 使用任务特定的后台处理 625
22.5.1 修改应用程序Cupertion以支持在后台播放音频 625
22.5.2 使用声音指示前往库珀蒂诺的方向 626
22.5.3 添加后台模式 629
22.6 完成长时间运行的后台任务 630
22.6.1 实现概述 630
22.6.2 创建项目 630
22.6.3 设计界面 631
22.6.4 创建并连接输出口 631
22.6.5 实现应用程序逻辑 632
22.6.6 启用后台任务处理 633
22.6.7 生成应用程序 634
22.7 执行后台获取 634
22.7.1 实现概述 634
22.7.2 创建项目 635
22.7.3 设计界面 635
22.7.4 创建并连接输出口 636
22.7.5 实现应用程序逻辑 636
22.7.6 添加后台获取模式 637
22.7.7 生成应用程序 638
22.8 进一步探索 638
22.9 小结 638
22.10 问与答 638
22.11 作业 639
第23章 创建通用应用程序 642
23.1 开发通用应用程序 642
23.1.1 将项目配置为通用的 643
23.1.2 通用应用程序开发工具和技巧 645
23.2 尺寸类 645
23.2.1 使用尺寸类工具 646
23.2.2 使用尺寸类创建故事板 651
23.3 进一步探索 656
23.4 小结 656
23.5 问与答 656
23.6 作业 657
第24章 应用程序跟踪、监视和调试 659
24.1 使用NSLog提供即时反馈 659
24.2 使用Xcode调试器 662
24.2.1 设置断点及单步执行代码 663
24.2.2 使用调试导航器 671
24.3 进一步探索 674
24.4 小结 675
24.5 问与答 675
24.6 作业 676