WrappingHStack
2.2.11
WrappingHStack 是一个 UI 元素,其工作方式与 HStack 非常相似,但会自动将溢出元素放置在下一行。
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+
. package ( url : " https://github.com/dkk/WrappingHStack " , . upToNextMajor ( from : " 2.0.0 " ) )
只需将以下行添加到您的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
。即前导、尾随或居中。
为了更加方便和灵活, WrappingHSTack
提供了参数spacing
,它定义了如何计算间距。它可以是以下类型之一:
.constant
:对于固定间距,每行以一个项目开始,任意两个项目之间的水平间距是给定值。.dynamic
:让项目填充 WrappingHSTack 的宽度。您可以传递最小间距。.dynamicIncludingBorders
以项目之间以及从项目到边框的相等间距填充整个宽度。您可以传递最小间距。 NavigationLink
中使用WrappingHStack
时需要解决方法(仅限 iOS16)。您可以通过帮助我解决任何报告的问题或功能请求并创建拉取请求来为该项目做出贡献。
赞助这个项目以获得奖励并给我精神上的提升。
WrappingHStack 最初由 Daniel Klöck 开发,并在 MIT 许可证下发布。