WrappingHStack

一个 SwiftUI 组件,类似于 HStack,可以将水平溢出的子视图换行到下一行。

概述

该库基于 SwiftUI 的 Layout 协议,因此具有以下部署要求

iOS 16.0+, iPadOS 16.0+, macOS 13.0+, Mac Catalyst 16.0+, tvOS 16.0+, watchOS 9.0+

组件的签名

WrappingHStack(alignment: Alignment = .center,
               horizontalSpacing: CGFloat? = nil,
               verticalSpacing: CGFloat? = nil,
               fitContentWidth: Bool = false)

该组件默认使用 .center 对齐方式,但也支持以下对齐值:.center, .leading, .topLeading, .top, .topTrailing, .trailing, .bottomTrailing, .bottom, .bottomLeading。其余的都按照 .center 处理。

该组件默认使用系统提供的间距,但也可能指定显式的 horizontalSpacingverticalSpacing

该组件默认占据整个可用宽度。但是,您可以将 fitContentWidth 设置为 true,使其根据其内容调整其宽度。

该组件假设最大的子视图适合边界,并且没有无限增长的子视图。该组件假设它可以根据需要垂直增长,以适应宽度约束。

示例

标签数组

WrappingHStack

WrappingHStack(alignment: .leading) {
    ForEach(tags) {
        Text($0.text)
            .foregroundColor(Color.white)
            .padding(.horizontal, $0.horizontalPadding)
            .padding(.vertical, $0.verticalPadding)
            .background(Color.gray)
            .cornerRadius(16)
    }
}

安装

您可以通过将其作为包依赖添加到 Xcode 项目中,来添加 WrappingHStack。

https://github.com/ksemianov/WrappingHStack

如果您想在 SwiftPM 项目中使用 WrappingHStack,只需简单地将其添加到 Package.swift 文件中的 dependencies 子句中即可。

dependencies: [
    .package(url: "https://github.com/ksemianov/WrappingHStack", from: "0.2.0")
]

如果您想在 CocoaPods 项目中使用 WrappingHStack,请将此行添加到您的 Podfile 文件。

'WrappingHStackLayout', '~> 0.2.0'

许可协议

该库根据 MIT 许可证发布。有关详细信息,请参阅 LICENSE