WrappingHStack
2.2.11
WrappingHStack は HStack と非常によく似た方法で動作する UI 要素ですが、オーバーフローした要素を自動的に次の行に配置します。
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
: 固定間隔の場合、各行は項目で始まり、任意の 2 つの項目間の水平方向の間隔は指定された値になります。.dynamic
: 項目が WrappingHSTack の幅を満たすようにします。最小限の間隔で通過できます。.dynamicIncludingBorders
使用して、項目間および項目から境界線までの等間隔で全幅を埋めます。最小限の間隔で通過できます。 NavigationLink
でWrappingHStack
使用する場合は回避策が必要です (iOS16 のみ)。報告された問題や機能リクエストの解決に協力し、プル リクエストを作成することで、このプロジェクトに貢献できます。
このプロジェクトをスポンサーして報酬を獲得し、私の精神力を高めてください。
WrappingHStack はもともと Daniel Klöck によって開発され、MIT ライセンスの下でリリースされました。