複数のText項目を並べて画面幅に合わせて改行したい場合がありました。
WrappingHStackというコードを使用すると実現することができましたので紹介します。
実現したかったレイアウト
下記のようなレイアウトを作成する際、HStackをForEachで回して実装できないか検討しました。

しかし、HStackを使用して、文字列などの項目をレイアウトすると、以下画面のように意図しない位置に(自動的に)改行が入ってしまいます。

import SwiftUI
struct RepeatView2: View {
let textArray = ["テキスト1", "テキスト2", "テキスト3","テキスト4", "テキスト5"]
var body: some View {
VStack {
HStack {
ForEach(textArray, id: \.self) { text in
Text(text)
}
}
}
}
}WrappingHStackについて
githubで公開されているコードです。
画面内に収まらないような要素を自動的に次の行に配置してくれます。
GitHub - dkk/WrappingHStack: A SwiftUI HStack with the ability to wrap contained elements
A SwiftUI HStack with the ability to wrap contained elements - dkk/WrappingHStack
インストール方法
[File] → [Add Packages…]でパッケージのインストール画面を開きます。

画面右上の検索フォームに、リポジトリのURLを入力します。
URL:https://github.com/dkk/WrappingHStack
WrappingHStackが見つかると思いますので、画面右下の「Add Package」ボタンを押します。

使用方法
使用したいソースにimportします。
import WrappingHStackコード例
上記に記載したコードのForEachをWrappingHStackに置き換えるだけです。

import SwiftUI
import WrappingHStack
struct WrapingHStackView: View {
let textArray = ["テキスト1", "テキスト2", "テキスト3","テキスト4", "テキスト5"]
var body: some View {
WrappingHStack(textArray, id:\.self) { text in
Text(text)
}
}
}ライセンスについて
ライセンスは、MIT Licenceで、無料で使用可能ですが、コードを使用する前に作者のgithubページで確認してから使用してください。
