第1章 创建第1个iPhone应用 1
1.1 iPhone应用开发的背景 1
1.2 做好准备工作 5
1.3 下载开发工具 7
1.4 了解iOS运行环境 8
1.5 iOS应用开发的注意点 9
1.6 创建第1个Hello World iPhone应用 10
1.6.1 通过Xcode创建并运行iPhone项目 10
1.6.2 了解iPhone应用的基本运行机理 15
1.6.3 丰富你的iPhone 应用 18
1.6.4 为应用添加桌面图标 21
1.6.5 关于iPhone 5应用的补充说明 24
1.6.6 老版本应用的兼容性问题 24
1.7 小结 24
第2章 Objective-C语言开发基础 25
2.1 Obiective-C的Hello World程序 26
2.2 创建一个Objective-C类 29
2.2.1 通过Xcode创建Person类 29
2.2.2 对Person类的解读 32
2.2.4 继承和多态 38
2.2.5 选择器(selector) 43
2.3 常用类介绍 45
2.3.1 NSString类 45
2.3.2 NSArray类 48
2.3.3 NSDictionary类 51
2.4 属性(Property) 53
2.4.1 设置属性 53
2.4.2 以Person类为例 53
2.4.3 @synthesize指令 54
2.4.4 Xcode 4.5以后版本对@synthesize指令的处理 56
2.4.5 属性特性 56
2.5 内存管理 58
2.6 类别(class category) 59
2.7 类扩展(class extension) 62
2.8 协议 63
2.8.1 声明协议 63
2.8.2 使用协议 63
2.8.3 更多协议的特性 64
2.9 小结 64
第3章 设计iPhone 应用——从零开始 65
3.1 MVC架构 65
3.2 基于nib文件开发单视图交互性的应用 67
3.1.1 创建交互性应用视图 67
3.1.2 连接视图和视图控制器 72
3.1.3 创建事件处理代码 76
3.3 创建多视图交互应用 78
3.2.1 创建空应用 79
3.2.2 添加主视图 81
3.2.3 添加子视图 85
3.2.4 进一步完善应用 86
3.4 小结 91
第4章 设计iPhone应用——使用故事板 92
4.1 故事板和Segue 92
4.2 完整的MVC应用 94
4.2.1 创建视图框架 94
4.2.2 添加Unwind Segue 98
4.2.3 通过Unwind Segue传递数据 100
4.2.4 准备武侠故事模型 103
4.2.5 通过Segue传递数据 105
4.2.6 完善详情视图并运行应用 106
4.2.7 继续完善应用——动态创建控件 110
4.2.8 创建自适应文字长度的标签控件 112
4.3 容器视图(Container View) 113
4.3.1 容器视图的基本知识 113
4.3.2 容器视图的简单例子 114
4.3.3 实现子视图控制器之间的互动(一) 120
4.3.4 实现子视图控制器之间的互动(二) 122
4.4 小结 125
第5章 导航栏视图控制器和标签栏视图控制器 126
5.1 导航栏视图控制器介绍 127
5.1.1 认识导航栏视图控制器 127
5.1.2 认识Master-Detail项目模板 128
5.1.3 搭建导航栏视图控制器项目 131
5.1.4 通过代码创建导航栏视图控制器 134
5.2 标签栏视图控制器介绍 135
5.2.1 认识标签栏视图控制器 135
5.2.2 认识Tabbed Application 项目模板 136
5.2.3 搭建标签栏视图控制器项目 141
5.2.4 通过代码创建标签栏视图控制器 144
5.3 集成导航栏视图控制器与标签栏视图控制器 145
5.4 小结 147
第6章 属性字符串 148
6.1 通过属性字符串格式化文本 148
6.1.1 通过属性格式配置标签文本 150
6.1.2 属性文本支持的控件 151
6.2 通过代码设置属性字符串 151
6.2.1 了解NSAttributedString类 152
6.2.2 设置字间距和字体背景色 154
6.2.3 设置阴影以及下画线效果 155
6.2.4 为字符串不同部分设置不同效果 156
6.2.5 设置段落效果 157
6.2.6 可以设置的属性字符串样式列表 160
6.3 小结 161
第7章 iOS控件应用入门 162
7.1 iOS控件简介 162
7.2 分段控件、文本框控件、滑块控件 163
7.2.1 分段控件介绍 164
7.2.2 文本框控件介绍 166
7.2.3 滑块控件介绍 169
7.2.4 创建展示项目 171
7.2.5 在输入完成后关闭键盘(一) 176
7.2.6 在输入完成后关闭键盘(二) 177
7.2.7 点击视图退出键盘 179
7.3 Web视图和活动指示器控件 180
7.3.1 Web视图控件介绍 180
7.3.2 活动指示器控件介绍 182
7.3.3 创建展示项目 184
7.4 图像视图控件 189
7.4.1 图像视图控件介绍 190
7.4.2 创建展示项目 190
7.5 小结 193
第8章 iOS控件应用进阶 195
8.1 进度视图、开关和计步器控件 195
8.1.1 进度视图控件介绍 195
8.1.2 开关控件介绍 197
8.1.3 计步器控件介绍 198
8.1.4 创建展示项目 199
8.2 警告视图、动作表单、活动视图控制器 202
8.2.1 警告视图介绍 203
8.2.2 警告视图示例 204
8.2.3 动作表单介绍(邮件视图控制器) 208
8.2.4 动作表单示例 210
8.2.5 活动视图控制器介绍 215
8.2.6 活动视图控制器示例 216
8.3 日期选择器(工具栏控件) 218
8.3.1 日期选择器控件介绍 218
8.3.2 创建展示项目 219
8.4 自定义选择器 226
8.5 自定义选择器控件介绍 226
8.5.1 数据源协议——UIPicker-ViewDataSource 227
8.5.2 代理协议——UIPicker-ViewDelegate 228
8.5.3 创建plist文件数据源 229
8.5.4 读取plist文件的方法 233
8.5.5 单轮选择器示例 233
8.5.6 多轮选择器示例 237
8.6 小结 241
第9章 应用及视图生命周期 242
9.1 应用的生命周期 242
9.1.1 应用的不同状态 243
9.1.2 通过代码模拟观察应用生命周期 245
9.1.3 应用程序的加载 247
9.1.4 响应中断 248
9.1.5 进入后台运行 249
9.1.6 返回前台运行 250
9.1.7 关于main函数 251
9.2 视图生命周期 252
9.2.1 视图生命周期简介 252
9.2.2 视图生命周期中的主要方法 253
9.2.3 loadView方法 253
9.2.4 与应用生命周期的互动 254
9.3 小结 256
第10章 iOS绘图和自动旋转 257
10.1 iOS绘图 257
10.1.1 视图和坐标体系 258
10.1.2 图形颜色处理 260
10.1.3 在上下文中绘制图形 261
10.1.4 手工绘图应用示例 264
10.2 自动旋转 270
10.2.1 旋转屏幕 271
10.2.2 使用自动尺寸处理旋转 273
10.2.3 通过代码方式处理旋转 276
10.3 小结 280
第11章 iOS自动布局 281
11.1 通过约束处理屏幕旋转 282
11.1.1 约束应用示例 282
11.1.2 约束应用详解 285
11.1.3 不同的约束类型——Pin 286
11.1.4 不同的约束类型——Align 290
11.1.5 视图之间约束的互相作用 293
11.2 通过代码创建约束 293
11.2.1 NSLayoutConstraint类 293
11.2.2 通过代码创建约束:指定控件位置 295
11.2.3 为控件指定高度、宽度 297
11.2.4 处理多个控件 299
11.3 可视化格式语言 302
11.3.1 constraints With Visual-Format:方法 302
11.3.2 可视化格式语言的具体例子 303
11.3.3 可视化格式语言的深入 304
11.4 小结 306
第12章 手势识别技术 307
12.1 自定义手势识别 307
12.2 使用自动手势识别器 309
12.2.1 自动手势识别开发原理 309
12.2.2 离散性手势与连续性手势 313
12.2.3 如何在模拟器中测试手势 315
12.2.4 识别轻扫手势 316
12.2.5 识别轻击手势 319
12.2.6 识别捏合手势 320
12.2.7 创建自定义手势识别器 323
12.3 小结 323
第13章 iOS高级控件 324
13.1 滚动视图控件 324
13.1.1 使用滚动视图示例 325
13.1.2 在滚动视图中支持图片放大和缩小 328
13.1.3 滚动查看多个图片 330
13.1.4 关于滚动视图控件的更多知识 333
13.2 页面指示器控件 334
13.2.1 页面指示器控件示例 335
13.2.2 完善代码:允许用户点击页面指示器翻页 339
13.3 表格视图 340
13.3.1 表格样式 341
13.3.2 单元格样式 342
13.3.3 表格视图元素 344
13.3.4 数据源协议UITable-ViewDataSource 346
13.3.5 代理协议UITable-ViewDelegate 348
13.3.6 表格视图示例 348
13.3.7 创建自定义的表格单元格 355
13.3.8 分段示例 364
13.3.9 索引示例 368
13.3.10 实现搜索栏 369
13.4 小结 376
第14章 Passbook 377
14.1 Passbook初览 378
14.2 通过passsource.com创建凭证 379
14.3 凭证的工作原理 382
14.4 创建第1个凭证 383
14.4.1 找到开发者团队标识(teamIdentifier) 383
14.4.2 创建凭证类型标识(passType-Identifier) 383
14.4.3 创建Hello World凭证 388
14.5 凭证文件包的构成 395
14.6 pass.json文件 396
14.6.1 顶级键的说明 397
14.6.2 次级键的说明 398
14.7 打折券凭证详解 400
14.8 登机牌凭证详解 402
14.9 通过PassKit框架操作凭证 406
14.9.1 PassKit库介绍 406
14.9.2 PassKit示例 407
14.10 小结 410
第15章 集合视图 (UlCollection-View) 411
15.1 集合视图基础 412
15.1.1 数据源协议(UICollectionView-DataSource) 413
15.1.2 代理协议(UICollectionView-Delegate) 414
15.1.3 创建第1个集合视图应用 414
15.1.4 集合视图布局(UICollectionView-Layout) 422
15.1.5 认识补充视图(Supplementary View) 427
15.2 自定义集合视图单元格 429
15.3 小结 431
第16章 iOS多线程编程 432
16.1 什么是多线程 432
16.2 iOS的多线程知识 433
16.2.1 派遣队列 Dispatch Queue 434
16.2.2 程序块Block 440
16.2.3 在视图中通过GCD实现异步操作 444
16.3 异步执行代码的其他方法 447
16.3.1 通过performSelector来异步执行 447
16.3.2 通过NSTimer来异步执行 449
16.4 后台运行应用 449
16.5 小结 452
第17章 数据持久化 453
17.1 通过NSUserDefaults进行数据持久化 453
17.1.1 创建持久化联系人信息应用 454
17.1.2 保存用户输入的数据 456
17.1.3 读取用户保存的数据 458
17.2 应用程序沙盒 460
17.3 通过属性列表持久化数据 463
17.4 归档对象 465
17.4.1 实现NSCoding协议 466
17.4.2 归档对象或取消归档 467
17.5 使用SQLite数据库 469
17.5.1 操作数据库的SQLite 函数 469
17.5.2 使用SQLite 3的视图应用 473
17.6 使用Core Data 480
17.6.1 使用Core Data 480
17.6.2 通过代码访问数据模型 486
17.6.3 获得NSManaged-ObjectContext对象 489
17.6.4 如何插入、查询、更新以及删除数据 490
17.7 小结 493
第18章 Core Location定位和Map Kit 494
18.1 Core Location框架 494
18.1.1 位置管理器监控位置变化 496
18.1.2 位置管理器监控方向变化 497
18.1.3 使用位置管理器监控位置的例子 498
18.2 Map Kit 502
18.2.1 创建一个地图应用 502
18.2.2 自定义地图显示位置及范围 503
18.2.3 使用大头针标注地理位置 506
18.2.4 了解和使用 MKAnnotation View 509
18.3 小结 513
第19章 Core Motion动作管理器 514
19.1 动作管理器类 515
19.1.1 检测加速计数据 517
19.1.2 检测旋转数据 522
19.1.3 检测组合信息 523
19.2 捕获动作事件 524
19.3 小结 524
第20章 iCloud云服务 526
20.1 了解iCloud云服务 526
20.2 云存储键/值对 529
20.3 云存储文档 532
20.3.1 子类化UIDocument 532
20.3.2 如何定位 Ubiquity Container 534
20.3.3 如何通过 NSMetadataQuery查询数据 535
20.3.4 文档的生命周期 536
20.4 小结 537