理 论篇 3
第1章 iOS应用开发概述 3
1.1 iOS应用的发展历程 4
1.2 iOS开发人员计划 4
1.3 iOS SDK 5
1.4 iOS开发者证书 6
1.5 iOS项目简介 7
1.5.1 iOS第一个项目 7
1.5.2 应用程序的生命周期 10
1.5.3 main函数 11
1.5.4 应用程序委托类对象 11
1.5.5 窗口类(UIWindow) 14
1.6 MVC思想 18
1.6.1 MVC思想的特点 19
1.6.2 iOS应用中的MVC思想 19
本章小结 20
本章练习 20
第2章 视图与界面 21
2.1 视图基础 22
2.1.1 视图常用属性 22
2.1.2 视图与图层 23
2.2 视图的几何特征 25
2.2.1 frame 25
2.2.2 transform 27
2.3 视图的层次结构 29
2.3.1 查询子视图 30
2.3.2 管理子视图 31
2.4 视图动画 33
2.4.1 UIView动画 34
2.4.2 UIViewBlock动画 35
2.5 标签 37
2.5.1 标签的属性 37
2.5.2 标签的应用 38
2.6 图像视图 39
2.6.1 图像视图的属性 40
2.6.2 图像视图的使用 40
2.6.3 图像动画 40
2.7 按钮 41
2.7.1 按钮的属性 42
2.7.2 按钮的事件 43
2.7.3 按钮的使用 43
2.8 文本框 45
2.8.1 文本框的属性 46
2.8.2 文本框的委托方法 47
2.8.3 文本框的使用 48
2.9 搭建界面 50
2.9.1 代码搭建界面 50
2.9.2 StoryBoard搭建界面 55
本章小结 60
本章练习 60
第3章 可滑动视图 61
3.1 滚动视图 62
3.1.1 滚动视图的属性 62
3.1.2 滚动视图的委托方法 63
3.1.3 滚动视图的使用 63
3.2 表视图 64
3.2.1 表视图的常用属性 64
3.2.2 样式 64
3.2.3 数据源 66
3.2.4 代理 67
3.2.5 表视图的使用 67
3.2.6 重用单元格 70
3.3 网格视图 71
3.3.1 网格视图的属性 72
3.3.2 数据源 73
3.3.3 代理 73
3.3.4 单元格的注册与重用 74
3.3.5 网格视图的使用 74
3.4 选择器视图 77
3.4.1 常用属性和方法 77
3.4.2 数据源 77
3.4.3 代理 78
3.4.4 选择器视图的使用 78
3.5 日期选择器视图 82
3.5.1 属性 83
3.5.2 获取时间数据 83
3.5.3 日期选择器的使用 83
本章小结 86
本章练习 86
第4章 控制器 87
4.1 视图控制器 88
4.1.1 视图控制器类中视图对象的加载过程 88
4.1.2 视图控制器类对象中视图对象的生命周期 89
4.1.3 模态跳转 90
4.2 导航控制器 92
4.2.1 栈的概念与性质 92
4.2.2 导航控制器类常用的属性与方法 93
4.2.3 导航栏 95
4.3 标签栏控制器 98
4.4 标签栏控制器和导航控制器的集成 100
本章小结 100
本章练习 100
第5章 多点触摸与手势处理器 101
5.1 响应者链 102
5.2 响应触碰的方法 103
5.3 手势处理器类 103
5.3.1 手势处理器的分类与使用步骤 104
5.3.2 手势处理器类的常用方法和属性 104
5.3.3 点击手势处理器类 104
5.3.4 捏合手势处理器类 106
5.3.5 旋转手势处理器类 107
5.3.6 轻扫手势处理器类 109
5.3.7 拖动手势处理器类 111
5.3.8 长按手势处理器类 113
本章小结 115
本章练习 115
第6章 图像与图形 117
6.1 图像的读取和加载 118
6.1.1 加载图像 118
6.1.2 实现动画效果 119
6.1.3 UIImage与“CGImage”方法 121
6.2 Quartz 2D绘图 121
6.2.1 CGContextRef 121
6.2.2 常用绘图函数 122
6.2.3 绘制几何图形 123
6.2.4 绘制文本 127
6.2.5 绘制图像 134
本章小结 140
本章练习 140
第7章 应用的数据存储 141
7.1 SQLite数据库 142
7.1.1 SQLite编程 142
7.1.2 创建数据库和数据表 144
7.1.3 实现对数据表数据的增、删、查、改操作 147
7.1.4 关闭数据库 152
7.2 CoreData框架 153
7.2.1 CoreData简介 153
7.2.2 手动初始化CoreData项目 153
7.2.3 自动创建CoreData项目 157
7.2.4 设计数据模型 158
7.2.5 使用CoreData实现对数据的增、删、改、查操作 159
本章小结 164
本章练习 164
第8章 网络应用编程 165
8.1 URL简介 166
8.2 检测网络状态 166
8.2.1 检查网络连接状态 166
8.2.2 监听网络状态的变化 168
8.3 NSURLConnection 169
8.3.1 使用NSURLRequest类对象从网络获取数据 170
8.3.2 使用NSMutableURLRequest类对象向服务器发送数据 174
8.4 XML数据解析 176
8.4.1 SAX解析与DOM解析 177
8.4.2 使用NSXMLParser类解析XML数据 178
8.4.3 使用GDataXML类解析XML数据 180
8.5 JSON数据解析 183
8.5.1 使用NSJSONSerialization类解析JSON数据 183
8.5.2 使用SBJson类解析JSON数据 185
8.5.3 使用JSONKit类解析JSON数据 187
本章小结 190
本章练习 190
第9章 多线程编程 191
9.1 线程概述 192
9.2 使用NSThread类实现多线程 193
9.2.1 创建和启动线程 193
9.2.2 线程的状态 194
9.2.3 终止子线程 196
9.2.4 线程睡眠 196
9.3 线程安全 197
9.3.1 线程安全问题 197
9.3.2 使用@synchronized修饰符实现线程同步 200
9.3.3 使用NSLock类实现线程同步 201
9.4 使用队列实现多线程 203
9.5 使用GCD实现多线程 207
9.5.1 创建队列 208
9.5.2 异步提交任务 209
9.5.3 同步提交任务 211
本章小结 213
本章练习 214
第10章 多媒体应用开发 215
10.1 音频的播放 216
10.1.1 使用System Sound Services播放音频 216
10.1.2 使用AVAudioPlayer类播放音频 218
10.1.3 使用AVPlayer类播放音频 222
10.2 视频的播放 223
10.2.1 使用AVPlayerViewController类播放视频 223
10.2.2 使用AVPlayer类播放视频 226
10.3 使用AVAudioRecorder类录制音频 227
10.4 拍照和录制视频 231
本章小结 235
本章练习 236
第11章 CoreLocation定位 237
11.1 iOS的定位支持 238
11.1.1 基站信号定位 238
11.1.2 WiFi信号定位 238
11.1.3 GPS卫星定位 239
11.2 获取设备定位信息 239
11.2.1 获取位置信息 240
11.2.2 使用iOS模拟器模拟设备位置 243
11.3 方向监测 244
11.4 区域监测 246
本章小结 248
本章练习 248
第12章 使用MapKit开发地图服务 249
12.1 MapKit框架 250
12.1.1 使用MKMapView类视图组件显示地图 250
12.1.2 指定地图显示中心和显示区域 252
12.1.3 使用MKMapCamera添加视点 256
12.2 根据地址定位 258
12.3 在地图上添加锚点 262
本章小结 266
本章练习 266
第13章 推送通知 267
13.1 推送通知简介 268
13.2 远程推送通知的准备过程 270
13.2.1 生成iOS应用唯一标识符 270
13.2.2 创建推送证书 274
13.3 注册应用程序 276
13.3.1 检索设备令牌 277
13.3.2 处理令牌请求错误 278
13.3.3 响应通知处理 279
13.4 本地推送通知 281
本章小结 281
本章练习 282
实 践篇 285
实践1搭建点餐系统Mac服务器 285
实践指导 285
实践1.1 点餐系统功能结构 285
实践1.2 搭建点餐系统本地服务器 286
实践2建立工程 302
实践指导 302
实践 302
拓展练习 310
实践3视图与界面 311
实践指导 311
实践 311
知识拓展 335
拓展练习 342
实践4可滑动视图 343
实践指导 343
实践 343
知识拓展 369
拓展练习 375
实践5视图控制器 376
实践指导 376
实践5.1 376
实践5.2 379
拓展练习 381
实践6网络应用编程 382
实践指导 382
实践 382
实践拓展 396
拓展练习 400
实践7应用的数据存储 401
实践指导 401
实践7.1 401
实践7.2 405
知识拓展 423
拓展练习 432
实践8多媒体应用开发 433
实践指导 433
实践拓展 442
拓展练习 444
实践9多点触摸与手势检测 445
实践指导 445
实践9.1 445
实践9.2 449
实践9.3 452
实践拓展 454
拓展练习 457
参考文献 458