三方库选型
一. 数据解析库:
- SwiftyJson(网络请求的Json串转换,便于做验证数据的处理),HandyJson(完全的转模型即反序列化以及序列化的操作)
- KakaJson
推荐:
SwiftyJson:SwiftyJSON本质上仍然是根据JSON结构去取值,使用起来顺手、清晰;和Alamofire-SwiftyJSON有很好的协作。
HandyJson:
保留:
KakaJson:完全的转模型即反序列化以及序列化的操作,功能复合,但是发布至今也仅8个月,实现细节可能还不完善。
二. 图片加载库:
- KingsFisher
- SDWebImage
推荐:
KingsFisher:纯Swift库,支持SwiftUI,自带缩略图动画,有友好的界面交互,也是SDWebImage的替代者,对高分辨率图像有很好的支持。
保留:
SDWebImage:OC与Swift混合,功能全面,处理细节颗粒更精细(防止同一URL重复下载),但是功能冗余,不需要的功能太多(如:SVG矢量图形,Lottie图像的支持等)
三. DarkMode支持库:
推荐:
SwiftTheme:相较于FluentDarkModeKit来说,两个库使用方法类似,都是通过设置对应light/dark下的颜色,图片等达到切换深/浅模式的效果。区别在于SwiftTheme支持的版本更早(iOS8+)。
保留:
FluentDarkModeKit:使用特点同上SwiftTheme,缺点是
iOS 11.0+
Xcode 11.0+
Swift 5+
四. 自动布局库:
- SnapKit
- SDAutoLayout
推荐:
SnapKit: 使用方式与Masonry相类似,使用起来很好就熟悉,功能实现相较于SDAutoLayout更成熟,潜在风险较低。
保留:
SDAutoLayout: 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应。但是细节实现还需要完善(如:和某些不常用系统方法一起使用会出现冲突)。
五. Progress HUD库:
- SVProgressHUD
- MBProgressHUD
推荐:
SVProgressHUD:
大多数场景中,几乎只会用到显示与隐藏这两个最基本的方法,SVProgressHUD更加易用,SVProgressHUD 提供比较多的接口。
保留:
MBProgressHUD:
功能设计更加好,在OC下可将其打包成“静态库”嵌入宿主工程当中。
六. 链式编程库:(技术同伴推荐)
- RxSwift+RxCocoa
- ReactiveCocoa
推荐:
RxSwift(RxCocoa):
认为把观察的对象统一为一种对象更好,所有的对象都是observables。功能实现上写法更简单,性能以及实现效果于RxSwift(RxCocoa)并无不同。
保留:
ReactiveCocoa:
认为把观察的对象区分为热/冷是非常有必要的,并且这也是他们框架的一个核心特点。在写法上更复杂一些,性能以及实现效果于RxSwift(RxCocoa)并无不同。