第1章 项目简介——“开门见山” 1
1.1项目介绍 2
1.1.1项目背景介绍 2
1.1.2项目注册 2
1.1.3接口文档的获取和查看 5
1.1.4项目功能介绍 8
1.2 Swift语言介绍 12
1.3搭建开发环境 12
1.3.1 Xcode概述 12
1.3.2 Xcode工具的下载安装 13
1.4项目目标 15
1.5本章小结 15
第2章 微博开发准备——“工欲善其事,必先利其器” 16
2.1创建微博工程 17
2.1.1新建项目 17
2.1.2默认项目架构 19
2.1.3了解程序启动的原理 20
2.2设置项目启动信息 21
2.2.1设置应用名称 21
2.2.2设置应用图标 21
2.2.3设置启动图片 23
2.3项目整体架构 26
2.3.1了解什么是视图(UIView) 27
2.3.2了解视图控制器(UIViewController) 28
2.3.3导航控制器的使用场景 28
2.3.4标签控制器的使用场景 29
2.3.5确定项目整体架构 29
2.3.6 MVC与MVVM模式 30
2.4本章小结 32
第3章 微博项目搭建——“万丈高楼平地起” 33
3.1设置项目目录结构 34
3.1.1设置目录结构 34
3.1.2创建各个控制器模板文件 36
3.1.3显示控制器的界面 38
3.2添加子控制器 39
3.2.1标签控制器的组成 39
3.2.2导航控制器的组成 41
3.2.3设置标签和标题 42
3.3添加撰写按钮 44
3.3.1了解什么是按钮控件(UIButton) 44
3.3.2自定义Tab Bar 45
3.3.3按钮监听方法 48
3.4本章小结 49
第4章 访客视图 50
4.1分析访客视图与现有架构的关系 51
4.2创建表格视图控制器基类 52
4.2.1了解视图的加载机制 52
4.2.2添加表视图控制器基类 53
4.3分析访客视图界面 54
4.3.1标签控件(UILabel) 54
4.3.2图片控件(UIImageView) 55
4.3.3分析访客视图界面元素 56
4.4开发访客视图界面 58
4.4.1创建访客视图 58
4.4.2添加图片控件 59
4.4.3了解自动布局(Auto Layout) 60
4.4.4使用自动布局(Auto Layout) 61
4.4.5使用自动布局设置图片的位置 63
4.4.6添加其他控件 64
4.4.7 VFL语言 67
4.4.8添加遮罩视图,并使用VFL布局位置 69
4.4.9设置未登录信息 70
4.5首页动画 74
4.5.1了解iOS中的基本动画 74
4.5.2为首页转轮图片设置动画 75
4.6本章小结 75
第5章 第三方框架介绍 76
5.1 CocoaPods工具 77
5.1.1 CocoaPods工具简介 77
5.1.2安装CocoaPods工具 78
5.2 AFNetworking框架 78
5.3 SnapKit框架 79
5.4 SDWeblmage框架 84
5.4.1 SDWeblmage框架的安装 84
5.4.2 SDWeblmage框架的简单使用 86
5.5 SVProgressHUD框架 87
5.5.1 SVProgressHUD框架介绍 87
5.5.2使用SVProgressHUD框架 88
5.6本章小结 88
第6章 封装网络工具类 89
6.1网络编程基础知识 90
6.1.1网络编程简单工作原理 90
6.1.2 URL介绍 90
6.1.3HTTP协议 92
6.1.4 GET和POST方法 92
6.2封装网络工具类 93
6.2.1网络封装原理 93
6.2.2使用CocoaPods工具导入AFNetworking框架 94
6.2.3了解什么是单例模式 95
6.2.4创建网络工具类 96
6.3本章小结 101
第7章 登录授权 102
7.1 OAuth机制 103
7.1.1 OAuth机制介绍 103
7.1.2 OAuth机制的使用流程 103
7.1.3新浪微博的Oauth 2.0授权机制 104
7.2获取访问令牌 105
7.2.1分析如何何获取访问令牌 105
7.2.2了解什么是Web视图 106
7.2.3使用Web视图加载登录授权页面 108
7.2.4利用JS注入填充用户名和密码 111
7.2.5获取授权码(code) 115
7.2.6获取访问令牌(access_token) 117
7.3加载用户信息 120
7.3.1了解JSON文档的结构 120
7.3.2解析JSON文档 121
7.3.3了解字典转模型的机制 122
7.3.4创建用户账号模型 123
7.3.5处理令牌的过期日期 124
7.3.6使用令牌加载用户信息 125
7.4归档用户信息到本地 127
7.4.1了解沙盒机制 127
7.4.2沙盒的目录结构 128
7.4.3沙盒目录获取方式 129
7.4.4对象归档技术 130
7.4.5归档和解档当前用户的信息 131
7.4.6创建用户视图模型 132
7.5本章小结 137
第8章 新特性和欢迎界面 138
8.1为项目添加新特性界面 139
8.1.1分析新特性界面 139
8.1.2介绍集合视图(UICollectioView) 139
8.1.3创建新特性视图控制器 144
8.1.4设置数据源 145
8.1.5设置集合视图的布局 146
8.1.6自定义集合视图单元格(cell) 146
8.1.7使用UIView实现动画 148
8.1.8“开始体验”按钮动画 149
8.2为项目添加欢迎界面 151
8.2.1分析欢迎界面 151
8.2.2欢迎界面布局 152
8.2.3欢迎界面动画 157
8.2.4设置用户头像 159
8.3切换界面 159
8.3.1界面切换流程分析 159
8.3.2介绍偏好设置(NSUserDefaults) 160
8.3.3显示程序启动后的界面 161
8.3.4欢迎界面跳转到首页界面 163
8.3.5新特性界面跳转到首页界面 164
8.3.6访客视图跳转到欢迎界面 164
8.4本章小结 165
第9章 微博首页 166
9.1微博数据模型 168
9.1.1获取微博数据 168
9.1.2字典转换成模型 170
9.1.3表视图(UITableView) 171
9.1.4表视图单元格(UITableViewCell) 174
9.1.5表格显示微博数据 176
9.1.6嵌套用户模型 179
9.1.7微博视图模型 181
9.2文字微博布局 183
9.2.1分析无图微博的布局 183
9.2.2自定义单元格 184
9.2.3顶部视图布局 187
9.2.4内容标签布局 192
9.2.5底部视图布局 194
9.2.6单元格细节调整 199
9.2.7全局修改函数的名字 200
9.3配图微博布局 202
9.3.1微博中图片的显示方式 202
9.3.2准备配图需要的数据 202
9.3.3添加配图视图 208
9.3.4修改配图视图宽高 209
9.3.5计算配图视图的大小 210
9.3.6计算微博单元格的行高 213
9.3.7了解图像视图的填充模式 214
9.3.8给配图单元格设置图片 215
9.3.9给图片添加GIF标记 217
9.4本章小结 218
第10章 微博转发 219
10.1显示转发的微博 220
10.1.1转发微博分析 220
10.1.2准备数据模型 221
10.1.3搭建转发微博单元格 222
10.1.4设置被转发微博的数据 226
10.1.5处理原创微博与转发微博的互融 227
10.1.6了解GCD技术 229
10.1.7调整单张图片的显示 230
10.2刷新微博 233
10.2.1下拉刷新模式 233
10.2.2 下拉刷新控件 235
10.2.3分析微博刷新的过程 237
10.2.4使用Xib自定义下拉刷新控件 240
10.2.5 KVO机制 245
10.2.6使用KVO监听刷新控件的位置变化 246
10.2.7提示箭头旋转动画 248
10.2.8播放和停止加载动画 249
10.2.9自定义上拉刷新控件 251
10.2.10 刷新用到的网络数据 252
10.2.11下拉刷新提示数量标签 255
10.3表情键盘 256
10.3.1多行文本控件(UITextView) 256
10.3.2创建表情键盘视图 258
10.3.3表情键盘界面布局 259
10.3.4项目添加文件夹的3种方式 265
10.3.5加载数据模型 266
10.3.6显示表情符号 268
10.3.7显示emoji表情 270
10.3.8提升数据模型 271
10.3.9选中表情事件 275
10.3.10实现图文混排 276
10.3.11处理发布微博的文本 278
10.3.12简化控制器的代码 281
10.4本章小结 284
第11章 发布微博 285
11.1发布文本和图片微博 286
11.1.1发布微博过程分析 286
11.1.2 工具条控件(UIToolbar) 287
11.1.3搭建发布微博的界面 289
11.1.4弹出键盘和关闭键盘介绍 296
11.1.5实现系统键盘的弹出和关闭 297
11.1.6在项目中整合表情键盘 298
11.1.7发布文字微博 300
11.1.8发布带图片的微博 303
11.2给微博选择照片 305
11.2.1用户选择照片发布的流程 305
11.2.2选择照片功能的实现流程 307
11.2.3图片选择器(Ul lmagePickerController) 308
11.2.4开发独立的照片选择项目 310
11.2.5将照片选择功能整合到微博项目 323
11.3本章小结 327
第12章 给配图微博添加查看器 328
12.1照片查看器功能分析 329
12.1.1了解照片查看器的功能 329
12.1.2分析图片数据的传递方式 330
12.1.3屏幕滚动控件(UIScrollView) 331
12.1.4分析图片查看器的视图结构 334
12.2照片查看器功能的实现 335
12.2.1实现数据传递 335
12.2.2准备图片查看控制器 337
12.2.3使用贝塞尔路径(UIBezierPath)绘图 338
12.2.4手势识别(UIGestureRecognizer) 338
12.2.5搭建图片查看界面 341
12.2.6实现图片查看的功能 342
12.3为照片查看器添加转场动画 353
12.3.1什么是转场动画 354
12.3.2了解照片查看器的转场功能 355
12.3.3分析转场过程中视图的层次结构 356
12.3.4分析图像的起始位置和目标位置 357
12.3.5初步完成自定义转场动画 358
12.3.6通过代理展现转场动画 363
12.3.7通过代理解除转场动画 371
12.4本章小结 376
第13章 数据缓存 377
13.1 SQLite数据库 378
13.1.1 SQLite数据库简介 378
13.1.2 SQL语句介绍 379
13.1.3使用SQLite3存储对象 380
13.2 FMDB框架的使用 380
13.2.1获取FMDB框架 380
13.2.2 FMDB框架核心类 381
13.2.3使用FMDB框架操作数据库 381
13.3使用FMDB缓存微博数据 393
13.3.1分析微博缓存的原理 393
13.3.2实现微博缓存 394
13.4清理数据存储 402
13.5本章小结 404
第14章 微博优化 405
14.1和日期相关的类 406
14.1.1 NSDate类(日期和时间) 406
14.1.2 NSDateFormatter类(日期格式器) 406
14.1.3 NSCalendar类 407
14.2微博日期处理 408
14.2.1了解微博的日期的显示方式 408
14.2.2处理微博日期格式 408
14.3使用正则表达式处理微博来源 412
14.3.1了解正则表达式处理字符串 412
14.3.2使用正则表达式过滤接口的来源信息 413
14.4使用表情文字 415
14.4.1准备工作 416
14.4.2测试普通字符串转换成属性字符串 417
14.4.3将功能代码移到EmoticonManager类里面 419
14.4.4微博项目整合表情字符串功能 420
14.5使用FFLabel框架响应超链接 421
14.5.1导入FFLabel框架 422
14.5.2替换系统的UILabel控件 423
14.5.3监听链接的单击 424
14.5.4响应超文本的链接 425
14.6开发最近使用表情的功能 428
14.7本章小结 430
第15章 项目调试和发布 432
15.1真机测试 433
15.2发布App到 App Store流程 437
15.2.1申请开发者账号 437
15.2.2登录开发者中心 437
15.2.3生成发布证书 438
15.2.4在Xcode中打包工程上传 444
15.2.5在App Store上开辟空间 446
15.3本章小结 447