第1章 iOS开发准备 2
1.1 iOS概述 2
1.1.1 iOS的产生与发展 2
1.1.2 iOS 11的新特性 3
1.2 iOS开发语言 4
1.2.1 Objective-C简介 4
1.2.2 Swift简介 5
1.3 搭建iOS开发环境 6
1.3.1 Xcode简介 7
1.3.2 安装Xcode 9 8
1.4 创建第一个iOS应用 12
1.5 iOS系统的架构层次 19
本章小结 20
思考与练习 20
第2章 iOS基本开发流程 22
2.1 iOS的框架与设计模式 22
2.1.1 iOS的主要框架 22
2.1.2 iOS中常用的设计模式 23
2.2 应用程序的开发流程 25
2.2.1 创建MyProject项目 26
2.2.2 配置视图 33
2.2.3 实施视图控制器 47
2.3 应用程序的测试与发布 49
2.3.1 使用模拟器测试应用程序 50
2.3.2 使用iOS设备测试应用程序 51
2.3.3 发布应用程序到App Store 56
本章小结 56
思考与练习 56
第3章 基础UI控件 60
3.1 视图控制器和视图 60
3.1.1 视图控制器 60
3.1.2 视图UIView 62
3.2 常用的界面构建方式 70
3.2.1 使用故事板构建界面 70
3.2.2 使用XIB构建界面 74
3.2.3 使用纯代码构建界面 79
3.2.4 3种界面构建方式的比较 80
3.3 常用视图控件的用法 82
3.3.1 标签控件(UILabel)和图片控件(UIImageView) 82
3.3.2 按钮控件(UIButton) 88
3.3.3 文本框控件(UITextField)和文本视图控件(UITextView) 94
案例3-1:创建一个登录程序 101
本章小结 108
思考与练习 109
第4章 高级UI控件 112
4.1 导航控制器(UINavigationController) 112
4.1.1 导航控制器的工作原理 112
4.1.2 导航控制器的组成 113
案例4-1:使用导航控制器构建界面 114
4.2 标签控制器(UITabBarController) 119
4.2.1 标签控制器的工作原理 120
4.2.2 标签控制器的组成 120
案例4-2:使用标签控制器构建界面 121
4.3 滚动视图(UIScrollView) 123
4.3.1 滚动视图的常用属性 123
4.3.2 滚动视图的代理方法 124
案例4-3:使用滚动视图实现无限循环轮播图 124
4.4 表视图(UITableView) 133
4.4.1 表视图的基本组成 133
4.4.2 表视图的两种类型 134
4.4.3 表视图中单元格的组成和样式 135
4.4.4 表视图的数据源协议和代理协议 135
案例4-4:使用表视图实现图书列表展示 137
4.5 网页视图(UIWebView) 147
本章小结 155
思考与练习 155
第5章 多线程编程 158
5.1 多线程简介 158
5.1.1 进程和线程的概念 158
5.1.2 iOS的3种多线程技术 159
5.2 使用Thread实现多线程 159
5.2.1 Thread的创建方法 160
5.2.2 Thread的其他使用方法 160
5.3 Operation和OperationQueue 162
5.3.1 BlockOperation 162
5.3.2 OperationQueue 164
5.4 使用GCD实现多线程 166
5.4.1 GCD中几个重要的概念 166
5.4.2 GCD线程队列 167
案例5-1:使用多线程模拟火车票售票系统 173
本章小结 179
思考与练习 179
第6章 网络编程 182
6.1 网络编程的基本概念 182
6.1.1 网络请求 182
6.1.2 网络协议 183
6.1.3 JSON数据格式 185
6.2 使用URLSession进行网络请求 187
6.2.1 URLSession简介 188
6.2.2 实现GET和POST请求 189
6.2.3 用URLSession请求网络数据 192
6.3 使用CocoaPods管理第三方库 196
6.3.1 安装CocoaPods工具 196
6.3.2 在项目中使用CocoaPods 198
6.4 使用Alamofire进行网络请求 202
本章小结 205
思考与练习 205
第7章 多媒体和硬件 208
7.1 播放音频文件 208
7.2 播放视频文件 211
7.2.1 AVPlayer类简介 212
7.2.2 用AVPlayer播放视频 213
7.3 使用相机和照片图库 219
7.3.1 UIImagePickerController类简介 219
7.3.2 用UIImagePickerController获取图片 221
本章小结 227
思考与练习 227
第8章 定位服务和地图应用 230
8.1 定位服务 230
8.1.1 实现定位服务 230
8.1.2 地理信息编码与反编码 236
8.2 地图应用 241
8.2.1 显示地图 241
8.2.2 添加标注点 245
本章小结 249
思考与练习 249
第9章 屏幕适配 252
9.1 屏幕适配的历史背景 252
9.2 Autoresizing布局技术 253
9.3 Auto Layout布局技术 256
9.3.1 在Interface Builder中管理Auto Layout约束 257
9.3.2 使用Auto Layout布局 260
本章小结 266
思考与练习 266
第10章 数据持久化 268
10.1 应用程序的沙盒 268
10.2 用属性列表实现数据持久化 272
10.3 用对象归档实现数据持久化 278
10.4 用SQLite数据库实现数据持久化 285
10.4.1 添加SQLite 3动态库 285
10.4.2 导入SQLite 3头文件 286
10.4.3 使用SQLite 3数据库 288
10.4.4 创建SQLite应用程序 289
10.5 用Core Data实现数据持久化 293
10.5.1 添加Core Data支持 293
10.5.2 理解Core Data栈 295
10.5.3 设计数据模型 295
10.5.4 创建Core Data应用程序 298
本章小结 303
思考与练习 304
第11章 动画技术 306
11.1 UIView动画 306
11.1.1 动画闭包 306
11.1.2 动画附加选项 307
11.1.3 创建过渡动画 311
11.2 CoreAnimation动画 315
11.2.1 图层(CALayer) 315
11.2.2 动画基类(CAAnimation) 317
11.2.3 属性动画(CAPropertyAnimation) 317
11.2.4 用路径创建关键帧动画 322
11.2.5 过渡动画(CATransition) 324
本章小结 327
思考与练习 327
第12章 项目设置与发布 330
12.1 申请开发者账号 330
12.2 应用程序收尾设置 334
12.2.1 设置图标 334
12.2.2 设置启动画面 335
12.2.3 设置标识、签名和部署信息 338
12.3 创建生产证书、App ID和描述文件 338
12.3.1 创建生产证书 339
12.3.2 创建App ID 343
12.3.3 创建描述文件 344
12.4 应用程序的打包与发布 348
12.4.1 在iTunes Connect中创建和配置应用 348
12.4.2 使用Xcode打包和上传应用 350
12.4.3 在iTunes Connect中提交审核 351
本章小结 352
思考与练习 352
第13章 开发实践——上班签到App 354
13.1 功能简介 354
13.2 开发思路 355
13.3 实现过程 356
13.3.1 创建项目文件 356
13.3.2 设计用户界面 357
13.3.3 创建表视图控制器类 360
13.3.4 创建数据模型 363
13.3.5 编写主要程序 366
13.4 收尾工作 372
参考文献 376