Text
で複数行のテキストを取得する方法を理解するだけです。 Text
のデフォルトはUILabel
と同じ(1行)のようですが、この基準を満たす関数が見つかりません。
_struct ContentView : View {
var body: some View {
VStack(alignment: .leading, spacing: 10) {
HStack {
Text("Avocado Toast").font(.system(size: 24))
}
// This Text does cut, and I wonder how I can achieve multiple rows
Text("Ingredients: Avocado, Almond Butter, Bread")
.font(.system(size: 20))
}
}
}
_
.lineLimit(X)
、トリックを行いました。しかし、例えば、特定の量を設定しないことは可能です。 0だけで?
テキストの行数を制限するには、.lineLimit()
を使用します。引数としてオプションのInt(_Int?
_)を取り、.lineLimit(nil)
は無制限の行を許可します。
編集:SwiftUI Beta 5以降、Text
のデフォルトの行制限はnil
であるため、Text
のテキストはデフォルトで折り返されます。
テキストをフォームでラップするため、.lineLimit(Int.max)
は機能しませんでした。折り返すタイミングを知るには、ある程度の幅が必要なようです。公式な方法は.fixedSize
:
Text(message)
.fixedSize(horizontal: false, vertical: true)
ドキュメントは述べています:
この例は、親より広いテキストビューに対するfixedSize(horizontal:vertical :)の効果を示し、テキストビューの切り捨てられていない理想的な幅を維持しています。
これを使って:
Text("Ingredients: Avocado, Almond Butter, Bread")
.lineLimit(nil)
それが機能しない場合は、次の方法を使用します。
Text("Ingredients: Avocado, Almond Butter, Bread")
.fixedSize(horizontal: false, vertical: true)
行制限が適用されていなくても、テキストが切り捨てられ続けました。コンテンツをScrollView {}
解決しました。
LineLimit(nil)が機能しない場合は、layoutPriorityを手動で適切な値に設定してください.layoutPriority(0.5)