WrappingHStack

WrappingHStack 是一个 UI 元素,其工作方式与 HStack 非常相似,但会自动将溢出的元素放置在下一行。

示例

Example

WrappingHStack {
    Text("WrappingHStack")
        .padding()
        .font(.title)
        .border(Color.black)
    
    Text("can handle different element types")
    
    Image(systemName: "scribble")
        .font(.title)
        .frame(width: 200, height: 20)
        .background(Color.purple)
    
    Text("and loop")
        .bold()
    
    WrappingHStack(1...20, id:\.self) {
        Text("Item: \($0)")
            .padding(3)
            .background(Rectangle().stroke())
    }.frame(minWidth: 250)
}
.padding()
.border(Color.black)

安装

要求 iOS 13 及更高版本

Swift Package Manager

  1. 在 Xcode 中,打开你的项目并导航到 File → Swift Packages → Add Package Dependency。
  2. 粘贴仓库 URL (https://github.com/dkk/WrappingHStack) 并点击 Next。
  3. 对于 Rules,选择 version。
  4. 点击 Finish。

Swift Package

.package(url: "https://github.com/dkk/WrappingHStack", .upToNextMajor(from: "2.0.0"))

Cocoapods

只需将以下行添加到你的 Podfile

pod 'WrappingHStack'

用法

将 WrappingHStack 包导入到你的视图中

import WrappingHStack

像使用 HStack 一样使用它来处理单个元素

WrappingHStack {
    /* some views */
    NewLine() // Optional: Use NewLine to force the next element to be placed in a next line
    /* some more views */
}

或者像使用 ForEach 一样循环处理多个项目

WrappingHStack(1...30, id:\.self) {
    Text("Item: \($0)")
}

项目定位

您可以使用参数 alignment 来控制项目的位置,该参数设置项目的 HorizontalAlignment。即,leading(前导)、trailing(尾随)或 centered(居中)。

为了更加方便和灵活,WrappingHSTack 提供了参数 spacing,用于定义间距的计算方式。它可以是以下类型之一

已知问题

贡献

您可以通过帮助我解决任何报告的问题或功能请求并创建 pull request 来为该项目做出贡献。

支持

赞助此项目以获得奖励并给予我精神上的鼓励。

许可证

WrappingHStack 最初由 Daniel Klöck 开发,并根据 MIT 许可证发布。