KRStackView 0.4.3.3

KRStackView 0.4.3.3

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2018年6月
SPM支持 SPM

Josh Woomin ParkJosh Woomin Park 维护。



KRStackView 0.4.3.3

  • 作者:
  • Josh Woomin Park

KRStackView

[![CI Status](http://img.shields.io/travis/Joshua Park/KRStackView.svg?style=flat) (https://travis-ci.org/Joshua Park/KRStackView) Version License Platform

简介

KRStackView 排列子视图的方式类似于 UIStackView,但支持早期 iOS 版本以及自动调整大小和自动布局。

KRStackView 实例的子视图将根据其 direction 属性进行排列,因此不再需要执行复杂的计算来设置子视图的 origin

此外,只要正确设置了子视图的 size 属性,KRStackView 实例将自动调整其大小以包含所有的子视图。

布局视图可以像定义 KRStackView 实例的 origin 并设置子视图的大小一样简单。其他排列将由框架处理。

示例

要运行示例项目,请先克隆仓库,然后从示例目录运行pod install

要求

KRStackView 可以与自动调整大小和自动布局一起使用。

安装

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

pod "KRStackView"

用法

当使用代码和界面构建器时,《code>`KRStackView``的大小并不那么重要,因为它会根据子视图的尺寸增长其边界

此外,每个子视图的《code>原点``属性也不会很重要,因为它们将根据《code>KRStackView``实例的属性进行排列。只需确保准确地设置 `size` 属性,并且依照应该布局的顺序。

代码化

只需声明一个 KRStackView 实例并向其中添加子视图。然后通过以下方式设置各种属性进行进一步定制。

// Using `init()`
let stackView1 = KRStackView()
stackView1.addSubview(view1)
stackView1.addSubview(view2)

// Using `init(frame:subviews:)`
let stackView2 = KRStackView(frame: CGRectZero, subviews:[view1, view2])
界面构建

从《对象库》中将 UIView 拖到界面上,然后在《身份检查器》中将自定义类更改为 KRStackView

像对 UIView 对象一样将子视图添加到 KRStackView 中。

属性

@IBInspectable public var enabled: Bool = true

如果希望子视图布局为类似于 UIView 的普通布局,请将此属性设置为 false。动态将该属性更改为 true 将导致布局动态更改。

默认值为 false

public var direction: StackDirection = .Vertical

KRStackView 会根据 direction 属性对子视图进行排列,忽略它们的初始 origin。动态更改将反映出来。

默认值为 .Vertical。可能的值有 .Vertical.Horizontal

@IBInspectable public var translatesCurrentLayout: Bool = false

如果希望子视图的初始 origin 被转换为其相应的 KRStackView 属性,请将此属性设置为 true

当您想要 KRStackView 与现有的 UIView 结合使用或者想要保留初始布局但可以动态更改视图的布局时,可以使用此属性。

默认为 false。此外,在调用 layoutSubviews() 后,此属性将自动设置为 false

public var insets: UIEdgeInsets = UIEdgeInsetsZero

内边距将基于子视图的最外层边界。如果 translatesCurrentLayout 设置为 true,则忽略此属性。

默认值为 UIEdgeInsetsZero

@IBInspectable public var spacing: CGFloat = 8.0

此属性定义了子视图之间的间距。如果 KRStackView 实例中的所有子视图都需要均等地间隔,请使用此属性。

默认值为 8.0。如果 itemSpacing 为非空值,则重写此属性。

public var itemSpacing: [CGFloat]?

此属性定义了子视图之间的单个间距。每个值是 subviews 数组中相应视图之后的间距,即 itemSpacing![n] 实例中 subviews[n] 之后 的间距。

数组中的值的数量应为 n-1,其中 n 实例中子视图的数量。任何在 n-1之后出现的值将被忽略。如果数组中的值的数量少于 n-1,则抛出一个致命错误。

如果设置了此属性,则忽略 spacing 属性。

public var alignment: ItemAlignment = .Origin

alignment 属性定义了子视图的对齐方式。如果 direction 设置为 .Vertical,则此属性定义了子视图的横向对齐方式,反之亦然。

默认值为.Origin。可能的值有.Origin.Center.EndPoint

public var itemOffset: [CGFloat]?

itemOffset属性定义了每个子视图的偏移量,基于alignment属性。如果direction = .Verticalalignment = .Origin,每个值将使子视图在x轴上从KRStackView的原点偏移,即相当于子视图的origin.x = offset

每个项目值是对应视图在subviews数组中的偏移量,即itemOffset![v]subviews[n]的偏移量。

@IBInspectable public var shouldWrap: Bool = false

shouldWrap属性将在有剩余空间时缩小bounds以使其更加紧致。如果子视图在垂直和水平方向上都超出了bounds,则此属性似乎没有效果。

默认值为 false

作者

Joshua Park, [email protected]

许可证

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