第1章 走进iOS 1
1.1 iOS简介 1
1.1.1智能手机操作系统 1
1.1.2 iOS发展历史 2
1.1.3 iOS应用程序的设计理念 2
1.2 iOS系统的结构 3
1.2.1 Core OS 3
1.2.2 Core Services 4
1.2.3 Media 6
1.2.4 Cocoa Touch 7
1.3 iOS和macOS对比 7
1.4学好iOS开发的建议 8
1.5小结 8
第2章 创建第一个iOS应用 9
2.1 iOS开发环境 9
2.1.1安装Xcode 9
2.1.2认识Xcode 9
2.2创建iOS应用——Hello World 10
2.2.1创建一个Xcode项目 10
2.3认识Xcode的面板 11
2.3.1 Navigators面板 11
2.3.2 Jump Bar跳转栏 16
2.4运行iOS应用 17
2.4.1使用iOS模拟器运行应用 17
2.4.2使用iOS设备运行应用 19
2.5 Playground介绍 21
2.6小结 22
第3章 Swift基础知识 23
3.1 Swift语言介绍 23
3.2变量 23
3.2.1声明和命名规则 23
3.3常量 24
3.3.1声明和命名规则 24
3.4 Swift基础数据类型 25
3.4.1数字类型 26
3.4.2布尔值(Bool) 28
3.4.3字符串(String) 29
3.4.4可空类型 30
3.5注释 33
3.6小结 34
3.7知识拓展 35
第4章 控制语句 36
4.1条件语句 36
4.1.1 if…else语句 36
4.1.2比较运算符 37
4.1.3逻辑运算符 37
4.1.4三目运算符 39
4.1.5 else if 39
4.2 switch语句 40
4.2.1什么是switch 40
4.2.2开始使用switch 41
4.2.3 switch的区间 42
4.2.4 switch值绑定 43
4.2.5 where子句 44
4.2.6元组和模式匹配 45
4.2.7 switch与if…case 46
4.3循环语句 48
4.3.1 for…in循环 48
4.3.2类型推断 51
4.3.3 while循环 52
4.3.4 repea…while循环 52
4.3.5控制转移语句 53
4.4小结 54
4.5知识拓展 54
第5章 数据容器 56
5.1数组 56
5.1.1数组创建 56
5.1.2数组的读取和修改 57
5.1.3数组的遍历 61
5.1.4数组的相等判断 61
5.1.5不可变数组 62
5.2字典 63
5.2.1字典创建 63
5.2.2字典的读取和修改 64
5.2.3字典的遍历 66
5.2.4字典到数组的转换 67
5.2.5不可变字典 67
5.3集合 67
5.3.1集合创建 68
5.3.2集合的修改 68
5.3.3集合的遍历 69
5.3.4集合的运用 69
5.4小结 71
5.5知识拓展 71
第6章 函数和闭包 73
6.1函数 73
6.1.1函数的基本概念 73
6.1.2函数参数 74
6.1.3默认参数 75
6.1.4 in-out参数 76
6.1.5函数返回值 77
6.1.6嵌套函数 78
6.1.7作用域 79
6.1.8函数类型 79
6.2闭包 80
6.2.1闭包的概念 80
6.2.2闭包的语法 80
6.2.3闭包表达式 81
6.2.4闭包捕获上下文 82
6.2.5闭包式引用 83
6.3小结 84
6.4知识拓展 85
第7章 自定义类型 86
7.1枚举 86
7.1.1基本枚举 86
7.1.2枚举的原始值 90
7.1.3方法 93
7.1.4关联值 95
7.2结构体 96
7.2.1结构体的声明 96
7.2.2实例方法 99
7.2.3关键字mutating 100
7.3类 101
7.3.1类的声明 101
7.3.2类的继承 102
7.4属性 104
7.4.1属性的设置 104
7.4.2属性的懒加载 105
7.4.3属性的读取 106
7.4.4属性的写入 107
7.4.5观察属性的变化 109
7.4.6类型的属性 110
7.4.7访问控制 112
7.5初始化 113
7.5.1初始化语法 114
7.5.2结构体的初始化 115
7.5.3类的初始化 117
7.5.4可失败的初始化 119
7.6值类型与引用类型 120
7.6.1值语义 120
7.6.2引用语义 121
7.6.3相等与同一 122
7.7小结 123
7.8知识拓展 123
第8章 Swift高级特性 127
8.1协议 127
8.1.1协议的定义 127
8.1.2协议的使用 127
8.1.3符合协议 129
8.1.4协议继承 131
8.1.5协议组合 132
8.2扩展 133
8.2.1扩展已有类型 133
8.2.2扩展自定义类型 135
8.3错误处理 136
8.3.1错误的分类 136
8.3.2抛出错误 136
8.3.3捕获错误 138
8.3.4错误处理的原则 139
8.4内存管理 139
8.4.1内存分配 139
8.4.2 ARC 140
8.4.3循环引用 141
8.5小结 144
8.6知识拓展 144
第9章 iOS应用开发概览 148
9.1 iOS应用基础框架 148
9.1.1 iOS应用的生命周期 148
9.1.2 main()函数 149
9.1.3 UIApplicationDelegate 150
9.1.4 Nib文件 152
9.1.5事件处理流程 152
9.2 iOS应用运行环境 154
9.2.1快速启动 154
9.2.2安全处理 154
9.2.3系统内存管理 154
9.3 iOS应用程序包 155
9.3.1 Info.plist 155
9.3.2应用程序图标 157
9.4 iOS应用程序间的交互 158
9.4.1使用URL打开其他应用程序 158
9.4.2从外部URL打开应用程序 161
9.5小结 163
9.6知识拓展 163
第10章 窗口和视图 166
10.1窗口和视图简介 166
10.1.1窗口 168
10.1.2视图 170
10.2 UIView基础 172
10.2.1 UIView的Frame布局 172
10.2.2 UIView绘制 175
10.2.3 UIView的层次结构 176
10.3自动布局Auto Layout 176
10.3.1布局属性 177
10.3.2约束 178
10.4小结 181
10.5知识拓展 181
第11章 视图控制器 183
11.1视图控制器基础 183
11.1.1视图控制器的功能 183
11.1.2 UIViewController的子类 185
11.2 UIViewController的生命周期 187
11.2.1初始化 187
11.2.2加载视图 187
11.2.3视图展示 187
11.2.4视图消失 189
11.3 UIViewController的使用 189
11.3.1 UIViewController概述 189
11.3.2自定义UIViewController 189
11.4 UINavigationController的使用 194
11.4.1 UINavigationController概述 194
11.4.2使用UINavigationController 194
11.5 UITabBarController的使用 200
11.5.1 UITabBarController概述 200
11.5.2使用UITabBarController 200
11.6小结 205
11.7知识拓展 205
第12章 简单控件 209
12.1 UIKit简介 209
12.1.1控件的分类 209
12.1.2 UIControl 210
12.2 UIButton 212
12.2.1在视图中添加UIButton 212
12.2.2 UIButton的属性 216
12.3 UITextField 217
12.3.1在视图中添加UITextField 217
12.3.2 UITextField的属性 219
12.3.3 UITextFieldDelegate 220
12.4 UISwitch 222
12.4.1在视图中添加UISwitch 222
12.4.2 UISwitch的属性 224
12.5 UISegmentedControl 225
12.5.1在视图中添加UISegmentedControl 225
12.5.2 UISegmentedControl的属性和方法 228
12.6 UISlider 229
12.6.1在视图中添加UISlider 230
12.6.2 UISlider的属性 232
12.7 UIImageView 234
12.7.1在视图中添加UIImageView 234
12.7.2 UIImageView的属性 235
12.8 UIProgressView 237
12.8.1在视图中添加UIProgressView 237
12.8.2 UIProgressView的属性 238
12.9 UIActivitylndicatorView 239
12.9.1在视图中添加UIActivityIndicator View 239
12.9.2 UIActivityIndicatorView的属性 241
12.10 UIDatePicker 241
12.10.1在视图中添加UIDatePicker 241
12.10.2 UIDatePicker的属性 244
12.11 UIPickerView 246
12.11.1添加UIPickerView 246
12.11.2 UIPickerView的属性 247
12.11.3 UIPickerViewDataSource 248
12.11.4 UIPickerViewDelegate 248
12.12 UIAlertController 249
12.12.1展示UIAlertController警示框 249
12.12.2展示UIAlertController选择框 254
12.13 UIStepper 257
12.13.1添加UIStepper 257
12.13.2 UIStepper的属性 259
12.14 UITextView 260
12.14.1添加UITextView 261
12.14.2 UITextView的属性 262
12.14.3 UITextViewDelegate 264
12.15小结 265
12.16知识拓展 265
第13章 复杂控件 268
13.1 UITableView 268
13.1.1添加UITableView 268
13.1.2 UITableViewDataSource 269
13.1.3 UITableViewDelegate 271
13.1.4 UITableViewCell 273
13.1.5创建一个数据类 276
13.2 UICollectionView 278
13.2.1添加UICollectionView 278
13.2.2 UICollectionViewDataSource 279
13.2.3 UICollectionViewDelegate 281
13.2.4 UICollectionViewFlowlayout 283
13.2.5 UICollectionViewCell 284
13.3 WKWebView 288
13.3.1添加WKWebView 288
13.3.2 WKNavigationDelegate 290
13.3.3 WKUIDelegate 295
13.4小结 296
13.5知识拓展 296
第14章 事件处理 299
14.1触摸 299
14.1.1触摸机制 299
14.1.2触摸与事件 299
14.1.3事件传递 300
14.1.4事件响应过程 301
14.1.5事件处理方法 302
14.2动作 303
14.3手势 304
14.4编辑事件 305
14.4.1粘贴板 306
14.4.2数据表示 307
14.4.3选项菜单 308
14.4.4剪切和复制 312
14.4.5粘贴 312
14.5小结 313
14.6知识拓展 313
第15章 绘图 314
15.1 Quartz 2D 314
15.2 Quartz 2D绘图 315
15.2.1坐标 315
15.2.2颜色 317
15.2.3图形 318
15.3贝塞尔曲线 319
15.3.1绘制曲线 320
15.3.2曲线内部检测 322
15.4小结 324
15.5知识拓展 324
第16章 动画 326
16.1 Core Animation 326
16.1.1 CALayer 326
16.1.2 CAAnimation 326
16.1.3 CATransaction 329
16.1.4动画实战 330
16.2小结 331
第17章 多媒体开发 332
17.1初识AVFoundation 332
17.2音频 333
17.2.1音频支持 333
17.2.2播放音频 334
17.2.3录制音频 338
17.3相册以及相机使用 341
17.3.1 UIImagePickerController 341
17.3.2 UIImagePickerControllerDelegate 344
17.4小结 345
第18章 传感器使用 346
18.1 Core Motion 346
18.1.1加速度计 346
18.1.2陀螺仪 348
18.1.3磁力计 349
18.2 Core Location 350
18.2.1获取当前位置 350
18.2.2获取城市信息 352
18.3小结 353
第19章 iOS文件系统 354
19.1 iOS文件操作 354
19.1.1 iOS常用目录 355
19.1.2获取常用目录的路径 355
19.1.3 iOS应用更新机制 358
19.1.4 iOS文件备份和恢复 358
19.2 iOS数据读写操作 358
19.2.1读写文件数据 358
19.2.2读写属性列表数据 359
19.2.3归档器和解档器读写数据 363
19.2.4保存状态 365
19.3小结 366
19.4知识拓展 366
第20章 数据 367
20.1 SQLite数据库 367
20.1.1 SQLite中的数据类型 367
20.1.2 SQLite常用函数及返回码 368
20.1.3打开数据库 373
20.1.4创建表 374
20.1.5操作语句 375
20.1.6数据查询 377
20.2 XML 379
20.2.1 XML简介 379
20.2.2 XML语法 380
20.2.3 XML元素 381
20.2.4 XML属性 382
20.3 JSON 383
20.3.1 JSON简介 383
20.3.2 JSON语法 383
20.3.3 JSON实战 384
20.4小结 386
20.5知识拓展 386
第21章 项目实战 388
21.1发布流程 388
21.2倒计时提醒应用 390
21.2.1应用功能的确定 390
21.2.2创建项目 390
21.2.3创建自定义的Cell 394
21.2.4搭建添加事件的界面 398
21.2.5事件的数据结构 403
21.2.6事件的数据库读写 405
21.2.7开发添加事件的功能 408
21.2.8开发事件展示的界面 416
21.3小结 419