FunctionalBuilders 0.8

FunctionalBuilders 0.8

Stefan 维护。



  • 作者:
  • Szymon Mrozek

FunctionalBuilders

遵循这篇文章中描述的方案,为在函数式方式中构建视图提供了一个模板。

思路

引入 视图构建器,而不是使用 storyboards。示例 MVVM+VB 架构

Architecture

一般情况下,视图构建器的思路是将安装和设置视图拆分成小的函数,并创建一个函数将它们全部连接在一起。

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