前言
之前的几篇博客算是入门篇,那么这篇就是RxSwift的实战篇。由于对RxSwift的认识还不够深刻,所以项目中没有使用MVVM模型,以及编程思想也还没转变过来。该项目是参考https://github.com/kLike/ZhiHu-RxSwift实现的,最大的实现区别就是,我用的是纯代码实现,还有对网络请求的封装。此外,原项目中存在大量强解包,很容易crash。因此,我是在原来基础上,做了一些优化,虽然在转模型上没有那么优雅,但是比原来的安全。最后,还是非常感谢该作者源码的贡献~
框架介绍
框架 | 说明 |
---|---|
Moya | 对Alamofire的封装 |
Moya/RxSwift | 针对RxSwift的Moya扩展 |
Kingfisher | 喵神的网络图片加载库 |
HandyJSON | 阿里巴巴出的Json转模型库 |
RxSwift | 这次主角 |
RxCocoa | 这次主角 |
RxDataSources | 对原生的UITableviewDataSource的Rx包装 |
SwiftDate | 处理Date的库 |
SnapKit | Mansory的swift版 |
SlideMenuControllerSwift | 侧栏显示 |
整体架构搭建
SlideMenuControllerSwift作为根控制器,侧栏为left VC,tabbarVC为center VC。然后tabbarVC添加两个控制器,一个为首页,一个为其他话题,然后隐藏tabbar,通过侧栏点击切换。如下图所示:
首页搭建
1、导航栏的设置
先来看看效果图:
刚开始导航栏的颜色是透明的,随着tableView向上滚动时,导航栏主键显示颜色。
设置代码如下:
- 获取导航栏的背景图,用于滚动时修改颜色和透明图
- 设置barTintColor为蓝色
- 设置barTintColor为白色
barImg = (navigationController?.navigationBar.subviews.first)!
barImg.alpha = 0
navigationItem.title = "今日要闻"
navi