上篇 Swift语言基础篇 2
第1章 Swift语言介绍 2
1.1 Swift语言介绍 2
1.2 Swift和Obiective-C语言对比 3
1.3 Swift优秀的特性 5
1.4 使用Xcode建立Swift项目 9
1.5 Swift使用Playground 13
第2章 基础知识 16
2.1 常量与变量 16
2.1.1 常量和变量的声明 16
2.1.2 常量或变量的类型 17
2.1.3 常量和变量的命名 17
2.1.4 常量和变量的输出 18
2.1.5 字符串的连接输出 19
2.1.6 注释 19
2.1.7 分号 20
2.1.8 汉字命名方式 20
2.2 类型定义 20
2.2.1 整型 20
2.2.2 浮点型 21
2.2.3 自定义类型typealias 22
2.2.4 类型安全及类型推导 22
2.2.5 常数和数值进制的表示方法 22
2.2.6 类型转换 23
2.2.7 类型别名 24
2.2.8 布尔类型 25
2.2.9 元组Tube 25
2.3 可选类型Optional 26
2.3.1 可选类型的声明 27
2.3.2 可选类型的赋值 27
2.3.3 可选类型的使用 27
2.3.4 可选类型nil的使用 28
2.4 基本运算符 28
2.4.1 赋值运算符 28
2.4.2 算术运算符 28
2.4.3 复合运算符 31
2.4.4 比较运算符 31
2.4.5 三目运算符 32
2.4.6 区间运算符 32
2.4.7 逻辑运算符 33
2.4.8 断言Assert操作 34
第3章 字符串、数组、字典 35
3.1 字符串 35
3.1.1 字符串字面量 35
3.1.2 字符串的连接 36
3.1.3 字符串与其他数据类型的拼接 36
3.1.4 字符串相关操作方法 37
3.1.5 与其他类型的转换 38
3.2 数组 39
3.2.1 数组的声明及初始化 39
3.2.2 数组元素的访问与修改 41
3.2.3 数组的遍历 42
3.2.4 数组元素的插入与删除 42
3.3 字典 43
3.3.1 字典的声明及初始化 44
3.3.2 字典元素的访问与修改 44
3.3.3 字典的遍历 45
第4章 控制语句和函数 47
4.1 分支结构 47
4.1.1 if条件语句 47
4.1.2 switch语句 48
4.2 语句的作用域 50
4.3 循环结构 51
4.3.1 for循环 51
4.3.2 forin循环 51
4.3.3 while循环 52
4.3.4 do-while循环 52
4.4 跳转语句及块标签 53
4.4.1 continue语句 53
4.4.2 break语句 53
4.4.3 fallthrough语句 54
4.5 函数 54
4.5.1 函数的定义及调用方法 55
4.5.2 函数的参数 55
4.5.3 函数的返回值 57
4.5.4 函数的变量参数 58
4.5.5 函数的类型 58
4.5.6 函数的嵌套 59
第5章 枚举和结构体 60
5.1 枚举 60
5.1.1 枚举的声明 60
5.1.2 枚举的值 60
5.1.3 枚举的使用方法 62
5.2 结构体 63
5.2.1 结构体的声明和定义 63
5.2.2 结构体的构造方法 63
5.2.3 结构体的赋值和取值 64
5.2.4 结构体的嵌套 64
5.2.5 结构体是值拷贝类型 65
第6章 类 66
6.1 类的声明与定义 66
6.1.1 类对象的创建 66
6.1.2 类的属性的访问 67
6.1.3 类的相互引用 67
6.1.4 类的嵌套 67
6.1.5 类是引用类型 68
6.1.6 恒等操作符(===/!===) 68
6.1.7 类的哈希 69
6.1.8 集合类型对象之间的赋值和拷贝 69
6.2 属性 71
6.2.1 对象属性 71
6.2.2 运算属性 76
6.2.3 类属性 77
6.3 方法 77
6.3.1 对象方法 77
6.3.2 类方法 80
6.4 subscript下标 81
6.4.1 subscript的作用 81
6.4.2 subscript的声明 82
6.4.3 subscript的使用方法 82
6.4.4 subscript使用方法的例子 82
第7章 继承 85
7.1 继承实例分析 85
7.2 重写 88
7.2.1 重写方法 89
7.2.2 重写属性 89
7.2.3 重写属性观察器 91
7.2.4 super关键字 93
7.2.5 final关键字 95
7.3 构造方法 97
7.3.1 构造方法的基本语法 97
7.3.2 构造方法的参数名称 98
7.3.3 属性的缺省值 99
7.3.4 结构体的构造方法 100
7.3.5 枚举类型的构造方法 101
7.3.6 值类型的构造方法代理 102
7.3.7 可选类型属性与构造方法 103
7.3.8 常量属性与构造方法 104
7.3.9 通过闭包或者函数设置属性的缺省值 105
7.3.10 派生类的构造方法 107
7.3.11 构造方法的重写 113
7.3.12 构造方法的自动继承 115
7.3.13 必须构造方法 118
7.4 析构方法 119
7.4.1 析构方法语法 119
7.4.2 析构方法的自动继承 120
7.5 类扩展 121
7.5.1 类扩展的语法 121
7.5.2 扩展运算属性 121
7.5.3 扩展构造方法 122
7.5.4 扩展普通方法 122
7.5.5 扩展下标 123
第8章 自动引用计数 125
8.1 自动引用计数的工作机制 125
8.2 自动引用计数实战 126
8.3 对象之间的循环强引用 129
8.4 解决对象之间的循环强引用 131
8.4.1 弱引用weak 131
8.4.2 无主引用unowner 134
8.4.3 无主引用以及显式展开的可选属性 136
8.5 闭包引起的循环强引用 137
8.6 解决闭包引起的循环强引用 140
8.6.1 定义占有列表 140
8.6.2 弱引用和无主引用 141
第9章 可选链和类型转换 143
9.1 可选链 143
9.1.1 可选链可替代强制解析 143
9.1.2 为可选链定义模型类 145
9.1.3 通过可选链调用属性 146
9.1.4 通过可选链调用方法 147
9.1.5 使用可选链调用下标 147
9.1.6 可选链多层链接 148
9.1.7 链接自判断返回值的方法 149
9.2 类型转换 150
9.2.1 子类的对象赋值为基类 150
9.2.2 类型检查 151
9.2.3 类型转换 151
9.2.4 Any和AnyObject类型转换 152
第10章 协议 155
10.1 协议的语法 155
10.1.1 属性要求 155
10.1.2 方法要求 157
10.1.3 Mutating方法要求 157
10.1.4 使用协议规范构造函数 158
10.1.5 实现构造协议的类 158
10.1.6 协议类型 159
10.2 委托/代理设计模式 160
10.3 协议的各种使用 163
10.3.1 在扩展中添加协议成员 163
10.3.2 通过扩展补充协议声明 164
10.3.3 集合中的协议类型 164
10.3.4 仅在类中使用协议 165
10.4 协议的继承 165
10.4.1 协议合成 166
10.4.2 检验协议的一致性 167
10.4.3 可选协议要求 168
第11章 闭包和操作符重载 171
11.1 闭包表达式 171
11.1.1 sorted函数 171
11.1.2 闭包表达式语法 172
11.1.3 根据上下文推断参数类型 173
11.1.4 单表达式闭包隐式返回 173
11.1.5 参数名称缩写 173
11.1.6 运算符函数 174
11.2 尾部闭包 174
11.2.1 访问上下文值 176
11.2.2 闭包是引用类型 177
11.3 运算符重载 178
11.3.1 中置运算符函数 178
11.3.2 前置和后置运算符 179
11.3.3 组合赋值运算符 179
11.3.4 比较运算符 180
11.3.5 自定义运算符 180
11.3.6 自定义中置运算符的优先级和结合性 181
11.4 泛型 182
11.4.1 泛型解决的问题 182
11.4.2 泛型类型 184
11.4.3 关联类型 190
11.5 Swift和Objective-C交互 194
11.5.1 Swift调用Objective-C函数 194
11.5.2 Objective-C调用Swift程序 197
下篇 Swift UI设计篇 202
第12章 第一个UI项目 202
12.1 创建工程 202
12.2 Xcode工程界面 204
12.3 代码及运行 205
12.4 运行 207
第13章 UIView视图 208
13.1 UIView的创建 208
13.2 CGRect详解 209
13.3 UIColor的使用 211
13.4 UIView的显示 214
13.5 父视图与子视图 214
13.5.1 概念 214
13.5.2 多视图 215
13.5.3 UIView的透明度属性 216
13.6 UIView其他操作 216
13.6.1 子视图数组 216
13.6.2 添加子视图的其他方法 217
13.6.3 子视图的层次的改变方法 219
13.6.4 UIView的简单动画 220
13.7 UIView的tag属性 223
13.8 UIView的移除 224
第14章 iOS中的各种控件 226
14.1 UILabel标签 226
14.1.1 UILabel的创建 226
14.1.2 UILabel的背景颜色和文字颜色 226
14.1.3 设置文本对齐方式 227
14.1.4 文字大小与标签宽度的自适应 228
14.1.5 行数与换行设置 230
14.1.6 UIFont字体的使用 232
14.1.7 文字阴影的设置 237
14.2 UIButton按钮控件 237
14.2.1 按钮的创建 237
14.2.2 UIButton的文字及颜色设置 238
14.2.3 State按钮的状态 240
14.2.4 Type按钮的类型 242
14.2.5 UIImage类的使用及给按钮添加图片 243
14.2.6 给按钮添加事件响应 252
14.3 UIImageView图片视图 258
14.3.1 UIImageView的创建并显示图片 258
14.3.2 UIImageView显示图片的拉伸设置 261
14.3.3 使用UIImageView实现动画 262
14.3.4 UIImageView的用户响应 265
14.4 UITextField单行文本框 267
14.4.1 UITextField创建 267
14.4.2 UITextField属性设置 268
14.4.3 键盘 275
14.4.4 UITextField响应用户事件 278
14.4.5 UITextField监控输入内容 280
第15章 UIViewControler视图控制器 285
15.1 创建视图控制器 285
15.2 视图控制器的产生过程 288
15.3 视图控制器的切换 290
15.3.1 弹出界面 290
15.3.2 回收界面 292
15.4 视图控制器的生命周期 293
15.5 视图控制器的切换动画 294
第16章 UINavigationController导航栏控制器 297
16.1 导航栏控制器概述 297
16.2 导航栏控制器的创建 298
16.3 导航栏 299
16.3.1 导航栏的标题 299
16.3.2 导航栏的背景颜色 300
16.3.3 导航栏的背景图片 300
16.3.4 导航栏的透明 302
16.3.5 导航栏的隐藏 303
16.4 视图控制器之间的切换 304
16.4.1 push 304
16.4.2 pop 306
16.5 navigationItem属性详解 312
16.5.1 提示区域 312
16.5.2 标题区域 312
16.5.3 设置右侧按钮 315
16.5.4 设置左侧按钮 319
16.5.5 设置一组按钮 321
16.5.6 设置返回按钮 322
16.6 UIToolBar的使用详解 325
16.6.1 系统自带的工具栏 325
16.6.2 使用工具栏 326
16.6.3 自定义工具栏 328
第17章 界面之间的传值 330
17.1 正向传值 330
17.2 反向传值 331
17.2.1 协议代理 332
17.2.2 闭包 334
第18章 UITabBarController标签栏控制器 337
18.1 标签栏控制器概述 337
18.2 标签栏控制器的创建 337
18.3 标签的创建 340
18.3.1 通过tabBarItem属性设置 340
18.3.2 自定义UITabBarItem 342
18.4 当创建的标签超过5个时的状态 344
18.5 标签栏控制器代理 346
18.5.1 捕捉编辑完成状态 346
18.5.2 捕捉标签选择的动作 348
18.6 标签栏控制器的其他属性设置 349
18.6.1 标签的徽标 349
18.6.2 手动选择标签 349
18.7 NSUserDefault本地化存储 350
第19章 UIScrollView滚动视图 352
19.1 UIScrollView的创建 352
19.2 滚动条的设置 353
19.2.1 滚动条的样式 354
19.2.2 滚动条的隐藏 354
19.3 滚动边界反弹效果 355
19.4 偏移量 356
19.5 滚动视图的代理方法 356
19.5.1 缩放 357
19.5.2 监控滚动视图的滚动 358
19.6 分屏滚动 359
19.7 引导页的实现 360
19.8 UIPageControl控件 363
19.8.1 创建方式 363
19.8.2 随着滚动视图的滚动改变当前页 363
19.8.3 设置显示效果 364
第20章 UITableView表视图 367
20.1 UITableView概述 367
20.1.1 UITableView的创建及显示 367
20.1.2 UITableView的头视图 368
20.1.3 UITableView的脚视图 369
20.1.4 UITableView的数据源 370
20.1.5 UITableView的分隔线 371
20.1.6 UITableViewCell单元格 373
20.1.7 UITableView的代理 377
20.1.8 UITableView的复用机制 379
20.2 NSIndexPath 380
20.3 多分区tableView 380
20.3.1 多分区tableView的创建 380
20.3.2 分区头标题 382
20.3.3 分区脚标题 383
20.3.4 分区头视图及头视图的高度 384
20.3.5 分区脚视图及脚视图的高度 385
20.4 UITableView行编辑 386
20.4.1 设置cell为编辑状态 386
20.4.2 修改cell的编辑状态 388
20.4.3 cell的响应编辑及左滑编辑功能 389
20.4.4 cell的删除 391
20.4.5 cell的增加 391
20.5 UITableView索引 392
20.6 UITableView搜索 395
20.6.1 搜索框 395
20.6.2 搜索显示控制器 395
20.7 UITableViewCell的定制 402
20.7.1 纯代码实现 404
20.7.2 xib实现定制 407