NTZStackView 1.2.2

NTZStackView 1.2.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2016年7月
SPM支持 SPM

Nguyen Phu Nghia 维护。



  • 作者
  • Nghia Nguyen

TZStackView

一个称为 UIStackView 的出色布局组件,随着 iOS 9 的推出而引入。使用此组件,您可以在水平垂直方向非常容易地布局组件。Apple 建议尽可能使用 UIStackView,只有当使用 UIStackView 无法完成时才求助于显式的 NSLayoutConstraints。这为您节省了大量样板代码 NSLayoutConstraint 的创建。

UIStackView 需要 iOS 9,但我们尚未准备好让我们的应用程序要求 iOS 9+。在此期间,我们作为开发者,渴望立即在我们的应用程序中尝试这个组件!这就是为什么我创建了 UIStackView 的这个副本,称为 TZStackView(TZ = Tom van Zummeren,我的首字母)。我非常仔细地创建了此组件,测试了每个角落和边缘情况,并使用自动化的 XCTestCases 将结果与真实的 UIStackView 进行了匹配。

特性

  • 兼容 iOS 7.xiOS 8.x
  • 支持包括所有 分配对齐 选项在内的完整的 UIStackView API
  • 支持动画化 arranged subviewshidden 属性
  • 支持 Storyboard

因此,此实现不支持 Storyboard。它是为 iOS 开发者准备的,像我一样,希望在我们的现有应用程序中使用 UIStackView 并喜欢在代码中而不是使用 Storyboard 布局组件。

设置

基本有两种方法可以向您的 项目中包含 TZStackView

直接将文件拖放到项目中

或者(如果您想支持 iOS 7),将以下类从 Example 文件夹中拖放到您的 项目中

  • TZStackView
  • TZSpacerView
  • TZStackViewAlignment
  • TZStackViewDistribution

示例用法

给定 view1view2view3,它们的内在内容尺寸分别设置为 100x10080x8060x60

let stackView = TZStackView(arrangedSubviews: [view1, view2, view3])
stackView.distribution = .FillEqually
stackView.alignment = .Center
stackView.axis = .Vertical
stackView.spacing = 25

这会产生以下布局

TZStackView Layout example

请参考《UIStackView 开发者文档》以了解所有关于分布、对齐和轴的其他组合。《TZStackView》与《UIStackView》的功能和行为完全相同,唯一的区别是不支持Storyboard。如果您发现《TZStackView》有不符合预期的行为,请提交一个bug报告。

要动画添加视图到或从排列的子视图中移除,只需在动画块内调整其hidden属性来隐藏或显示它们(与《UIStackView》参考文档描述相同)

UIView.animateWithDuration(0.5, animations: {
    self.view2.hidden = true
})

TZStackView hidden animation example

迁移到 UIStackView

如果将来某个时候您决定将至少iOS 9作为应用的最低要求(这迟早会发生),您希望迁移到真正的《UIStackView》而不是使用这个实现。因为《TZStackView》是《UIStackView》的直接替换项,所以您可以简单地替换:

let stackView = TZStackView(arrangedSubviews: views)

with …

let stackView = UIStackView(arrangedSubviews: views)

… 这样您就可以继续前行了!您不需要进行任何其他更改,所有内容都将如以前一样正常工作。

许可证

是在MIT许可证下发布的。请参阅LICENSE以获取详细信息。