FunctionalBuilders
遵循这篇文章中描述的方案,为在函数式方式中构建视图提供了一个模板。
思路
引入 视图构建器,而不是使用 storyboards。示例 MVVM+VB 架构
一般情况下,视图构建器的思路是将安装和设置视图拆分成小的函数,并创建一个函数将它们全部连接在一起。
public static func buildView(withFrame frame: CGRect) -> HomeView {
let homeView = HomeView(frame: frame)
return Builder(view: homeView)
|> setupBackgroundColor
|> installLabelsStackView
|> installNameLabel
|> installAgeLabel
|> installCityLabel
|> endEditing
}
优势
- 流程 - 我们可以一步步控制构建视图的过程
- 将视图构建过程通用化的可能性
- 整洁的结构
- 约束
约束
这个框架还使得安装约束更加容易、更具有函数性,例如
stackView.constraintBuilder
|> centerY(source: builder.view.centerYAnchor)
|> leading(source: builder.view.safeAreaLeadingAnchor, constant: 15.0)
|> trailing(source: builder.view.safeAreaTrailingAnchor, constant: 15.0)
|> height(constant: 200.0)
|> activate
它看起来更像是流式函数集合,我们曾经设置了目标视图(我们要设置的视图)并只传递生成约束函数的源。请查看函数定义以获取更多详细信息,但通常可以传递约束关系和优先级。
项目状态
当前项目处于开发阶段。还没有准备好在生产中使用。我们现在正在制定方案。在代码经过充分测试之前,我们不推荐在生产环境中使用。
如何使用?
当使用carthage时,在您的Cartfile
中添加以下行:
github "szymonmrozek/FunctionalBuilders"
如果您热爱CocoaPods,将以下行插入到Podfile
中:
pod 'FunctionalBuilders'
贡献
如果您有任何改进FunctionalBuilders
的想法,或者发现了修复的bug,请创建一个Pull Request。
许可证
FunctionalBuilders 在MIT许可证下发布。更多信息请参阅License.md。