第1章 Swift开发环境的搭建 1
1.1 下载Xcode 1
1.2 关于Mac操作系统 3
第2章 Swift语法速读 4
2.1 基础知识 4
2.1.1 变量与常量 4
2.1.2 注释 5
2.1.3 整数 5
2.1.4 浮点数 5
2.1.5 类型推测 5
2.1.6 数值型类型转换 5
2.1.7 布尔值 6
2.1.8 元组 6
2.1.9 可选类型 7
2.1.10 断言 8
2.2 基本运算符 9
2.2.1 赋值运算符 9
2.2.2 数值运算 9
2.2.3 自增(自减)运算 9
2.2.4 复合赋值 9
2.2.5 比较运算 10
2.2.6 三元运算符号 10
2.2.7 区间 10
2.2.8 逻辑运算 10
2.2.9 括号优先级 11
2.3 字符串和字符 11
2.3.1 字符串 11
2.3.2 字符 11
2.4 集合类型 13
2.4.1 数组 13
2.4.2 字典 14
2.5 流程控制 16
2.5.1 for循环 16
2.5.2 while循环 17
2.5.3 条件语句 18
2.5.4 控制转移语句 22
2.6 函数 22
2.7 闭包 25
2.8 枚举 25
2.9 类和结构体 26
2.10 属性 27
2.11 方法 30
2.12 下标 31
2.13 继承 33
2.14 构造过程 34
2.15 析构过程 36
2.16 自动引用计数 37
2.17 可选链 37
2.18 类型转换 38
2.19 类型嵌套 41
2.20 扩展 41
2.21 协议 43
2.22 泛型 45
2.23 访问控制 46
2.24 高级运算符 46
第3章 基础UIKit控件概览 49
3.1 创建工程及基本操作 49
3.1.1 创建Single View Application工程 49
3.1.2 基本操作 51
3.2 Button(按钮) 57
3.2.1 Button控件的基本属性 57
3.2.2 Button实例:各类按钮 59
3.3 Label 60
3.3.1 Label控件的基本属性 61
3.3.2 Label实例:各类文本标签 62
3.4 TextField 63
3.4.1 文本框控件的属性 63
3.4.2 实例:登录界面 64
3.4.3 实例:加法计算器 66
3.5 TextView 68
3.5.1 多行文本框的属性 68
3.5.2 实例:自定义选择内容后的菜单 69
3.6 Switch 70
3.6.1 文本框控件的属性 70
3.6.2 Switch控制TextView的可编辑属性 71
3.7 SegmentedControl 72
3.7.1 Segmented Control的属性 72
3.7.2 Segmented Control实例 73
3.8 IMageView 75
3.8.1 图像控件的基本属性 75
3.8.2 图像控件实例 75
3.9 ProgressView 78
3.9.1 进度条控件的属性 78
3.9.2 进度条控件的实例 78
3.10 Activitylndicator View 79
3.10.1 环形进度条的基本属性 80
3.10.2 环形进度条实例 80
3.11 Slider 82
3.11.1 拖动条的基本属性 82
3.11.2 实例:拖动条控制图片透明度 82
3.12 AlertView 84
3.12.1 警告框的基本属性 84
3.12.2 实例:各式各样的警告框 84
3.13 ActionSheet 88
3.13.1 底部警告框的基本属性 88
3.13.2 底部警告框的实例 88
3.14 DatePicker 89
3.14.1 日期选择器的基本属性 89
3.14.2 日期选择器的实例 90
3.15 PickerView 91
3.15.1 选择器的一些属性 91
3.15.2 选择器的实例 91
3.16 Stepper 96
3.16.1 步进器的一些属性 96
3.16.2 实例:属性加点器 96
3.17 WebView 98
3.17.1 网页视图控件的一些属性 98
3.17.2 实例:迷你网页浏览器 99
3.18 Toolbar与Bar Button Item 100
3.18.1 工具条的一些属性 100
3.18.2 Bar Button Item的一些属性 101
3.18.3 工具条的实例 102
3.19 TableView 103
3.19.1 TableView的一些属性 103
3.19.2 TableView的一个简单例子 104
3.20 SearchBar 109
3.20.1 搜索条的简单属性 109
3.20.2 搜索条的简单例子 110
3.20.3 Search Bar and Search Display Controller例子 115
3.21 NavigationBar 117
3.22 NavigationController 119
3.22.1 导航控制器的属性 119
3.22.2 导航控制器实例 119
3.23 TabBar 125
3.23.1 TabBar的一些属性 125
3.23.2 TabBarltem的一些属性 126
3.23.3 TabBar实例 127
3.24 TabBar Controller 127
3.25 Page View Control 129
3.25.1 Page View Controller属性 129
3.25.2 Page View Controller实例 129
第4章 拖拖看小游戏 133
4.1 构建主界面 133
4.2 基本变量和更新函数 137
4.3 判断得分 138
4.4 重新开始玩游戏 142
4.5 新增游戏规则界面实现跳转 143
4.6 自定义界面 147
第5章 豆瓣电台 155
5.1 动手之前先做一些准备 155
5.2 实现界面 159
5.3 设置TableView 163
5.4 异步获取网络数据 169
5.5 缓存缩略图 177
5.6 改变封面图 179
5.7 播放歌曲 179
5.8 选择歌曲频道 181
5.9 Cell的显示动画 185
5.10 播放时间与播放进度 187
5.11 简单的手势控制播放与暂停 189
5.12 最后的细节 200
第6章 任务提醒软件 201
6.1 软件预览 201
6.2 创建项目 202
6.3 设计Cell 207
6.4 动态展示Cell 209
6.5 简述MVC 211
6.6 Model初体验 211
6.7 导航控制器 214
6.8 界面跳转 219
6.9 处理新界面的一些细节 231
6.10 编辑任务类别 236
6.11 本地保存数据 242
6.12 加载本地数据 245
6.13 重新规划界面 251
6.14 任务类型的Model 258
6.15 动态设置任务列表界面的Title 262
6.16 增加和编辑任务类型 263
6.17 任务类型的本地化保存 269
6.18 数据保护措施 280
6.19 重构Model 282
6.20 数据本地化NSUserDefaults 290
6.21 计算还有多少个需要提醒的任务 295
6.22 任务类型列表排序 297
6.23 添加任务类型的图标 298
6.24 对应用做一些美化 308
6.25 任务截止时间 310
6.26 添加日期选择器 316
6.27 本地消息通知 327
第7章 SpriteKit简介 335
7.1 简单聊一聊 335
7.1.1 聊一聊SKNode 336
7.1.2 聊一聊SKScene 336
7.1.3 聊一聊纹理 336
7.1.4 聊一聊动作(Action) 336
7.1.5 聊一聊物理系统 336
7.2 如何学习SpriteKit 337
7.2.1 创建SpriteKit项目 337
7.2.2 创建第一个场景 339
7.2.3 往场景中添加内容 342
7.2.4 让文本动起来 343
7.2.5 场景的转换 343
7.2.6 使用SKSpriteNode 344
7.2.7 添加灯光 345
7.2.8 物理系统 347
第8章 游戏实战:围住神经猫 349
8.1 游戏预览 349
8.2 创建游戏项目 351
8.3 创建背景 353
8.4 创建圆点类 353
8.5 在场景中生成圆点 356
8.6 神经猫的类 364
8.7 寻路 366
8.8 作业 379
第9章 游戏实战:跑酷熊猫 380
9.1 创建游戏工程以及导入素材 381
9.2 创建熊猫类 384
9.3 显示一个动态的熊猫 387
9.4 熊猫的跳和打滚 389
9.5 踩踏平台是怎么炼成的 391
9.6 创建平台类以及平台工厂类 393
9.7 平台的移动 397
9.8 产生源源不断的移动平台 397
9.9 移除场景之外的平台 400
9.10 视差滚动背景 401
9.11 欢迎进入物理世界 408
9.12 与平台的碰撞 411
9.13 二段跳的实现 412
9.14 熊猫的打滚动作 413
9.15 起跳特效 415
9.16 苹果以及苹果工厂类 420
9.17 计分板 425
9.18 下沉和升降的平台 427
9.19 加速度 433
9.20 重置游戏 434
9.21 声音类 436
9.22 修复bug 446
后记 448