第1章 为开发准备好系统和iOS设备 1
1.1欢迎进入iOS平台 1
1.1.1 iOS设备 1
1.1.2显示屏和图形 2
1.1.3应用程序资源约束 3
1.1.4连接性 4
1.1.5输入和反馈 4
1.2成为iOS开发人员 4
1.2.1加入App1e开发人员计划 5
1.2.2安装Xcode 8
1.2.3添加设备支持组件 9
1.3创建并安装开发供应配置文件 10
1.3.1什么是开发供应配置文件 10
1.3.2配置用于开发的设备 10
1.4运行第一个iOS应用程序 12
1.5开发技术概述 14
1.5.1 Apple开发工具 14
1.5.2 Objective-C 14
1.5.3 CoCoa Touch 15
1.5.4模型-视图-控制器 15
1.6进一步探索 15
1.7小结 15
1.8问与答 15
1.9作业 16
1.9.1测验 16
1.9.2答案 16
1.9.3练习 16
第2章Xcode和iOSs模拟器简介 17
2.1使用Xcode 17
2.1.1创建和管理项目 18
2.1.2编辑和导航代码 24
2.1.3生成应用程序 31
2.1.4管理项目属性 34
2.2使用iOS模拟器 38
2.2.1启动应用程序 39
2.2.2模拟多点触摸事件 41
2.2.3旋转模拟的设备 41
2.2.4模拟其他情况 42
2.3进一步探索 43
2.4小结 43
2.5问与答 44
2.6作业 44
2.6.1 测验 44
2.6.2答案 44
2.6.3练习 44
第3章 探索Apple平台语言Objective-C 45
3.1面向对象编程和Objective-C 45
3.1.1什么是面向对象编程 46
3.1.2面向对象编程术语 47
3.1.3什么是Objective-C 48
3.2探索Objective-C文件结构 48
3.2.1头文件/接口文件 49
3.2.2实现文件 54
3.2.3自动生成的结构 56
3.2.4分类和协议 56
3.3 Objective-C编程基础 57
3.3.1声明变量 57
3.3.2分配和初始化对象 59
3.3.3使用方法及发送消息 60
3.3.4表达式和决策 62
3.4内存管理和自动引用计数(ARC) 65
3.4.1旧方式:保留并释放对象 65
3.4.2新方式:自动引用计数 66
3.5进一步探索 67
3.6小结 67
3.7问与答 67
3.8 作业 68
3.8.1 测验 68
3.8.2答案 68
3.8.3练习 68
第4章Cocoa Touch内幕 69
4.1 Cocoa Touch是什么 69
4.1.1冷静面对大量的功能 70
4.1.2年轻而成熟 70
4.2探索iPhone技术层 71
4.2.1 Cocoa Touch层 71
4.2.2多媒体层 72
4.2.3核心服务层 73
4.2.4核心OS层 74
4.3跟踪iOS应用程序的生命周期 75
4.4 Cocoa基础 76
4.4.1核心应用程序类 76
4.4.2数据类型类 78
4.4.3界面类 81
4.5使用Xcode探索iOS框架 83
4.5.1 Xcode 文档 84
4.5.2快速帮助 86
4.6进一步探索 88
4.7小结 88
4.8问与答 88
4.9作业 88
4.9.1 测验 88
4.9.2答案 89
4.9.3练习 89
第5章 探索Xcode Interface Builder 90
5.1了解Interface Builder 90
5.1.1 IB采用的方法 91
5.1.2剖析IB故事板 91
5.2创建用户界面 95
5.2.1对象库 96
5.2.2将对象加入到视图中 96
5.2.3使用IB编辑工具 97
5.2.4自动布局系统 100
5.3定制界面外观 102
5.3.1使用属性检查器 102
5.3.2设置辅助功能属性 103
5.3.3测试界面 104
5.4连接到代码 105
5.4.1打开项目 105
5.4.2实现概述 106
5.4.3输出口和操作 107
5.4.4对象身份 112
5.5进一步探索 113
5.6小结 113
5.7问与答 113
5.8作业 114
5.8.1测验 114
5.8.2答案 114
5.8.3练习 114
第6章 模型-视图-控制器应用程序设计 115
6.1了解设计模式模型-视图-控制器 115
6.1.1制作意大利面条 116
6.1.2使用MVC将应用程序设计结构化 116
6.2 Xcode如何实现MVC 117
6.2.1视图 117
6.2.2视图控制器 117
6.2.3数据模型 119
6.3使用模板Single View Application 120
6.3.1实现概述 120
6.3.2创建项目 120
6.3.3规划属性和连接 124
6.3.4设计界面 126
6.3.5创建并连接输出口和操作 128
6.3.6实现应用程序逻辑 131
6.3.6生成应用程序 132
6.4进一步探索 133
6.5小结 133
6.6问与答 133
6.7作业 134
6.7.1 测验 134
6.7.2答案 134
6.7.3练习 134
第7章 使用文本、键盘和按钮 135
7.1基本用户输入和输出 135
7.1.1按钮 135
7.1.2文本框和文本视图 136
7.1.3标签 136
7.2使用文本框、文本视图和按钮 136
7.2.1实现概述 137
7.2.2创建项目 137
7.2.3设计界面 138
7.2.4创建并连接输出口和操作 147
7.2.5实现按钮模板 149
7.2.6隐藏键盘 151
7.2.7实现应用程序逻辑 154
7.2.8生成应用程序 155
7.3进一步探索 155
7.4小结 156
7.5问与答 156
7.6作业 156
7.6.1 测验 156
7.6.2答案 156
7.6.3 练习 157
第8章 处理图像、动画、滑块和 158
步进控件 158
8.1用户输入和输出 158
8.1.1滑块 158
8.1.2步进控件 159
8.1.3图像视图 159
8.2创建并管理图像动画、滑块和 160
步进控件 160
8.2.1实现概述 160
8.2.2创建项目 161
8.2.3设计界面 162
8.2.4创建并连接到输出口和操作 168
8.2.5实现应用程序逻辑 171
8.2.6生成应用程序 175
8.3进一步探索 175
8.4小结 176
8.5问与答 176
8.6作业 176
8.6.1测验 176
8.6.2答案 177
8.6.3练习 177
第9章 使用高级界面对象和视图 178
9.1再谈用户输入和输出 178
9.1.1开关 179
9.1.2分段控件 179
9.1.3 Web视图 180
9.1.4可滚动的视图 181
9.2使用开关、分段控件和Web视图 181
9.2.1实现概述 182
9.2.2创建项目 182
9.2.3设计界面 183
9.2.4创建并连接输出口和操作 188
9.2.5实现应用程序逻辑 191
9.2.6生成应用程序 194
9.3使用可滚动视图 195
9.3.1实现概述 195
9.3.2创建项目 196
9.3.3设计界面 196
9.3.4创建并连接输出口和操作 200
9.3.5实现应用程序逻辑 200
9.3.6生成应用程序 201
9.4进一步探索 201
9.5小结 202
9.6问与答 202
9.7作业 202
9.7.1 测验 202
9.7.2答案 203
9.7.3练习 203
第10章 引起用户注意 204
10.1提醒用户 204
10.1.1提醒视图 205
10.1.2操作表 207
10.1.3系统声音服务 209
10.2探索提醒用户的方法 211
10.2.1实现概述 211
10.2.2创建项目 211
10.2.3设计界面 213
10.2.4创建并连接输出口和操作 214
10.2.5实现提醒视图 216
10.2.6实现操作表 221
10.2.7实现提醒音和震动 224
10.3进一步探索 225
10.4小结 226
10.5问与答 226
10.6作业 226
10.6.1 测验 226
10.6.2答案 226
10.6.3练习 227
第11章 实现多场景和弹出框 228
11.1多场景故事板简介 228
11.1.1术语 229
11.1.2创建多场景项目 230
11.1.3创建切换 234
11.1.4手工控制模态切换 237
11.1.5使用出口和回退切换 238
11.1.6以编程方式创建模态场景切换 239
11.1.7在场景之间传递数据 241
11.2理解iPad弹出框 243
11.2.1创建弹出框 244
11.2.2创建弹出切换 244
11.2.3手工显示弹出框 246
11.2.4响应用户关闭弹出框 247
11.2.5以编程方式创建并显示弹出框 249
11.3使用模态切换 251
11.3.1实现概述 251
11.3.2创建项目 251
11.3.4设计界面 255
11.3.5创建模态切换 256
11.3.6回退到初始场景 257
11.3.7创建并连接输出口和操作 257
11.3.8实现应用程序逻辑 258
11.3.9生成应用程序 259
11.4使用弹出框 260
11.4.1创建项目 261
11.4.2设计界面 261
11.4.3创建弹出切换 261
11.4.4创建并连接输出口 262
11.4.5实现应用程序逻辑 262
11.4.6生成应用程序 264
11.5进一步探索 264
11.6小结 265
11.7问与答 265
11.8作业 265
11.8.1 测验 265
11.8.2答案 265
11.8.3练习 266
第12章 使用工具栏和选择器做出选择 267
12.1了解工具栏 267
12.1.1栏按钮项 268
12.2探索选择器 270
12.2.1日期选择器 271
12.2.2选择器视图 272
12.3使用日期选择器 276
12.3.1实现概述 276
12.3.2创建项目 277
12.3.3设计界面 278
12.3.4创建切换 280
12.3.5创建并连接输出口和操作 281
12.3.6实现场景切换逻辑 281
12.3.7实现日期计算逻辑 284
12.3.8生成应用程序 287
12.4实现自定义选择器 288
12.4.1实现概述 288
12.4.2创建项目 288
12.4.3设计界面 290
12.4.4创建切换 292
12.4.5创建并连接输出口和操作 292
12.4.6实现场景切换逻辑 292
12.4.7实现自定义选择器视图 294
12.4.8生成应用程序 299
12.5进一步探索 300
12.6小结 300
12.7问与答 300
12.8作业 301
12.8.1测验 301
12.8.2答案 301
12.8.3练习 301
第13章 使用导航控制器和选项卡栏控制器 302
13.1高级视图控制器 302
13.1.1多场景开发 303
13.2探索导航控制器 304
13.2.1导航栏、导航项和栏按钮项 304
13.2.2在故事板中使用导航控制器 305
13.2.3在导航场景之间共享数据 307
13.3了解选项卡栏控制器 307
13.3.1选项卡栏和选项卡栏项 308
13.3.2在故事板中使用选项卡栏 控制器 308
13.3.3在选项卡栏控制器管理的 场景之间共享数据 312
13.4使用导航控制器 312
13.4.1实现概述 312
13.4.2创建项目 313
13.4.3创建压入切换 316
13.4.4设计界面 317
13.4.5创建并连接输出口和操作 318
13.4.6实现应用程序逻辑 319
13.4.7生成应用程序 320
13.5使用选项卡栏控制器 320
13.5.1实现概述 320
13.5.2创建项目 321
13.5.3创建选项卡栏关系 322
13.5.4设计界面 323
13.5.5创建并连接输出口和操作 324
13.5.6实现应用程序逻辑 325
13.5.7生成应用程序 327
13.6进一步探索 327
13.7小结 328
13.8问与答 328
13.9作业 329
13.9.1 测验 329
13.9.2答案 329
13.9.3练习 329
第14章 使用表视图和分割视图控制器导航数据 330
14.1了解表视图 330
14.1.1表视图的外观 331
14.1.2表单元格 332
14.1.3添加表视图 332
14.2探索分割视图控制器(仅适用于iPad) 337
14.2.1实现分割视图控制器 338
14.2.2模板Master-Detail Application 339
14.3一个简单的表视图应用程序 340
14.3.1实现概述 340
14.3.2创建项目 340
14.3.3设计界面 341
14.3.4连接输出口delegate和dataSource 342
14.3.5实现应用程序逻辑 343
14.3.6生成应用程序 347
14.4创建基于主-从视图的应用程序 347
14.4.1实现概述 348
14.4.2创建项目 348
14.4.3调整ipad界面 350
14.4.4调整iPhone界面 352
14.4.5实现应用程序数据源 353
14.4.6实现主视图控制器 356
14.4.7实现细节视图控制器 358
14.4.8修复细节视图控制器引用问题 360
14.4.9生成应用程序 360
14.5进一步探索 361
14.6小结 361
14.7问与答 361
14.8作业 362
14.8.1测验 362
14.8.2答案 362
14.8.3练习 362
第15章 读写应用程序数据 363
15.1 iOS应用程序和数据存储 363
15.2数据存储方式 365
15.2.1用户默认设置 366
15.2.2设置束 367
15.2.3直接访问文件系统 369
15.3创建隐式首选项 371
15.3.1实现概述 372
15.3.2创建项目 372
15.3.3创建界面 372
15.3.4创建并连接输出口和操作 373
15.3.5实现应用程序逻辑 374
15.3.6生成应用程序 377
15.4实现系统设置 378
15.4.1实现概述 378
15.4.2创建项目 378
15.4.3设计界面 379
15.4.4创建并连接输出口 380
15.4.5创建设置束 380
15.4.6实现应用程序逻辑 386
15.4.7生成应用程序 387
15.5实现文件系统存储 388
15.5.1实现概述 388
15.5.2创建项目 388
15.5.3设计界面 388
15.5.4创建并连接输出口和操作 389
15.5.5实现应用程序逻辑 391
15.6进一步探索 394
15.7小结 395
15.8问与答 395
15.9作业 395
15.9.1 测验 395
15.9.2答案 395
15.9.3练习 396
第16章 创建自适应的用户界面 397
16.1自适应界面 397
16.1.1启用界面旋转 398
16.1.2设计可旋转和调整大小的界面 399
16.2使用自动布局 400
16.2.1自动布局的语言和工具 401
16.2.2示例1:居中约束 405
16.2.3示例2:增大控件 407
16.2.4示例3:统一调整大小及自动布局的怪异行为 410
16.3以编程方式定义界面 413
16.3.1实现概述 413
16.3.2创建项目 414
16.3.3界面编程 414
16.3.4生成应用程序 418
16.4旋转时切换视图 418
16.4.1实现概述 419
16.4.2创建项目 419
16.4.3设计界面 420
16.4.4创建并连接输出口 421
16.4.5实现应用程序逻辑 422
16.4.6生成应用程序 423
16.5进一步探索 423
16.6小结 424
16.7问与答 424
16.8作业 424
16.8.1 测验 424
16.8.2答案 424
16.8.3练习 425
第17章 使用复杂的触摸和手势 426
17.1多点触摸手势识别 426
17.2添加手势识别器 427
17.3使用手势识别器 429
17.3.1实现概述 429
17.3.2创建项目 430
17.3.3设计界面 431
17.3.4给视图添加手势识别器 432
17.3.5创建并连接输出口和操作 435
17.3.6实现应用程序逻辑 438
17.3.7生成应用程序 444
17.4进一步探索 445
17.5小结 445
17.6问与答 445
17.7作业 445
17.7.1 测验 445
17.7.2答案 446
17.7.3练习 446
第18章 检测朝向和移动 447
18.1理解运动硬件 447
18.1.1加速计 448
18.1.2陀螺仪 449
18.2访问朝向和运动数据 450
18.2.1通过UIDevice请求朝向通知 450
18.2.2使用Core Motion读取加速计和陀螺仪数据 451
18.3检测朝向 453
18.3.1实现概述 453
18.3.2创建项目 453
18.3.3设计界面 453
18.3.4创建并连接输出口 454
18.3.5实现应用程序逻辑 454
18.3.6生成应用程序 456
18.4检测倾斜和旋转 457
18.4.1实现概述 457
18.4.2创建项目 457
18.4.3设计界面 458
18.4.4创建并连接输出口和操作 459
18.4.5实现应用程序逻辑 460
18.4.6生成应用程序 464
18.5进一步探索 465
18.6小结 465
18.7问与答 466
18.8作业 466
18.8.1 测验 466
18.8.2答案 466
18.8.3练习 466
第19章 使用多媒体 467
19.1探索多媒体 467
19.1.1 Media Player框架 468
19.1.2 AV Foundation框架 473
19.1.3图像选择器 475
19.1.4 Core Image框架 477
19.2创建用于练习使用多媒体的应用程序 479
19.2.1实现概述 479
19.2.2创建项目 479
19.2.3设计界面 481
19.2.4创建并连接输出口和操作 482
19.2.5实现电影播放器 483
19.2.6实现音频录制和播放 486
19.2.7使用照片库和相机 491
19.2.8 实现Core Image滤镜 494
19.2.9访问并播放音乐库 495
19.3进一步探索 500
19.4小结 501
19.5问与答 502
19.6作业 502
19.6.1测验 502
19.6.2答案 502
19.6.3练习 502
第20章 与其他应用程序交互 503
20.1应用程序集成 503
20.1.1地址簿 503
20.1.2电子邮件 507
20.1.3在社交网站上发表信息 508
20.1.4地图功能 510
20.2使用地址簿、电子邮件、社交网络和地图 513
20.2.1实现概述 513
20.2.2创建项目 513
20.2.3设计界面 514
20.2.4创建并连接输出口和操作 515
20.2.5实现地址簿逻辑 516
20.2.6实现地图逻辑 520
20.2.7实现电子邮件逻辑 523
20.2.8实现社交网络逻辑 524
20.2.9生成应用程序 525
20.3进一步探索 526
20.4小结 526
20.5问与答 526
20.6作业 526
20.6.1 测验 526
20.6.2答案 527
20.6.3练习 527
第21章 实现定位服务 528
21.1理解Core Location 528
21.1.1获取位置 528
21.1.2获取航向 532
21.2创建支持定位的应用程序 533
21.2.1实现概述 533
21.2.2创建项目 534
21.2.3设计视图 535
21.2.4创建并连接输出口 537
21.2.5实现应用程序逻辑 537
21.2.6生成应用程序 540
21.3理解磁性指南针 541
21.3.1实现概述 541
21.3.2创建项目 541
21.3.3修改用户界面 542
21.3.4创建并连接输出口 543
21.3.5修改应用程序逻辑 543
21.3.6生成应用程序 547
21.4进一步探索 548
21.5小结 548
21.6问与答 548
21.7作业 549
21.7.1 测验 549
21.7.2答案 549
21.7.3练习 549
第22章 创建支持后台处理的应用程序 550
22.1理解iOS后台处理 550
22.1.1后台处理类型 551
22.1.2支持后台处理的应用程序的生命周期 552
22.2禁用后台处理 554
22.3处理后台挂起 554
22.4实现本地通知 555
22.4.1常用的通知属性 556
22.4.2创建和调度通知 556
22.5使用任务特定的后台处理 557
22.5.1修改应用程序Cupertion以支持在后台播放音频 558
22.5.2使用声音指示前往库珀蒂诺的方向 559
22.5.3添加后台模式键 562
22.6完成长时间运行的后台任务 563
22.6.1实现概述 563
22.6.2创建项目 563
22.6.3设计界面 564
22.6.4创建并连接输出口 564
22.6.5实现应用程序逻辑 564
22.6.6启用后台任务处理 566
22.6.7生成应用程序 567
22.7进一步探索 567
22.8小结 568
22.9问与答 568
22.10作业 568
22.10.1 测验 568
22.10.2答案 568
22.10.3练习 569
第23章 创建通用应用程序 570
23.1开发通用应用程序 570
23.1.1理解通用模板 571
23.1.2通用应用程序设置方面的不同 572
23.2创建通用应用程序:方法1 574
23.2.1实现概述 574
23.2.2创建项目 574
23.2.3设计界面 575
23.2.4创建并连接输出口 575
23.2.5实现应用程序逻辑 576
23.2.6生成应用程序 577
23.3创建通用应用程序:方法2 577
23.3.1创建项目 577
23.3.2设计界面 579
23.3.3创建并连接输出口 579
23.3.4实现应用程序逻辑 580
23.3.5生成应用程序 580
23.4使用多个目标 580
23.4.1将iPhone目标转换为iPad目标 581
23.4.2将ipad目标转换为iPhone目标 581
23.5进一步探索 582
23.6小结 582
23.7问与答 583
23.8作业 583
23.8.1 测验 583
23.8.2答案 583
23.8.3练习 583
第24章 应用程序跟踪和调试 584
24.1使用NSLog提供即时反馈 584
24.2使用Xcode调试器 587
24.2.1设置断点及单步执行代码 588
24.2.2使用调试导航器 596
24.3进一步探索 598
24.4小结 598
24.5问与答 598
24.6作业 598
24.6.1 测验 598
24.6.2答案 599
24.6.3练习 599