NestLayout 0.4.0

NestLayout 0.4.0

测试经过测试
语言语言 SwiftSwift
许可证 MIT
发布日期上次发布2018年3月
SPM支持 SPM

Andres Cecilia Luque 维护。



  • Andrés Cecilia Luque

StackViews 布局的语法糖

然而,又一个自动布局框架。为什么这个与众不同?

在 iOS9 中,苹果公司引入了 StackViews,作为一种更简单、更安全、更有效、更灵活的方式来配置布局(它们很棒;P)。但,在使用了很长一段时间之后,我发现它们太冗长了,当我想执行一个比通常更复杂一点简单布局更改时,需要大量代码行数。在最后,当视图布局在长度和复杂度上增长时,如此大量无序的代码行更容易出错,且难以阅读。

这个框架专用于 StackViews 来配置布局:基本上,你可以把它看作是基于 StackView 布局的语法糖。其好处是

  • 布局逻辑是由苹果公司和 UIStackView 类(AutoLayout 在幕后工作)实现的,不是第三方开发者。这意味着它在 良好的性能和最小的实现错误 方面是可靠的。
  • 只要 UIStackView 揭示的 API 不变,这个框架展现的 API 也不会变。这意味着它在 长期可维护性 方面是可靠的。
  • 这个框架展现的 API 与 UIStackView 类展现的 API 完全一样。这意味着它具有 最小化的学习曲线,并且与自动补全一起能够轻松发现和易于使用。
  • 这个框架的源代码少于 200 行:如果你不喜欢在项目中添加另一个依赖项,这让你无需担心。
  • 这个框架展现的 API 能使你的代码更整洁、更易读、更具表现力。最终,它 更不容易出错

用法

hFixed 对应于具有高度约束的视图(红色)。hwFixed 对应于具有高度和宽度约束的视图(橙色)

UIStackView(hFixedView1, axis: .vertical, spacing: 10)
    .nest(label, alignment: .center)
    .nest(alignment: .center) {
        $0.nest(hwFixedView1, hwFixedView2, axis: .horizontal, alignment: .top)
    }
    .nest(hFixedView2, margins: [.left + .right: 30]) // This way of setting the margins is provided by the framework SugarEdges
    .snapEdges(in: contentView)

结果

Example

示例

要运行示例项目,克隆仓库,并使用 Xcode 打开位于 示例 文件夹下的工作区。

需求

为了方便地使用 NestLayout 设置边距,建议(但不是必须)也安装 SugarEdges

安装

NestLayout 通过 CocoaPods 提供。要安装
它,只需将以下行添加到您的 Podfile 中

pod 'NestLayout'

作者

Andrés Cecilia Luque (acecilia), [email protected]

许可证

NestLayout 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。