web-dev-qa-db-ja.com

テキストに無制限の行を追加する(SwiftUI)

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だけで?

10
Jacob Ahlberg

テキストの行数を制限するには、.lineLimit()を使用します。引数としてオプションのInt(_Int?_)を取り、.lineLimit(nil)は無制限の行を許可します。

編集:SwiftUI Beta 5以降、Textのデフォルトの行制限はnilであるため、Textのテキストはデフォルトで折り返されます。

12
RPatel99

テキストをフォームでラップするため、.lineLimit(Int.max)は機能しませんでした。折り返すタイミングを知るには、ある程度の幅が必要なようです。公式な方法は.fixedSize

Text(message)
    .fixedSize(horizontal: false, vertical: true)

ドキュメントは述べています:

この例は、親より広いテキストビューに対するfixedSize(horizo​​ntal:vertical :)の効果を示し、テキストビューの切り捨てられていない理想的な幅を維持しています。

24

これを使って:

Text("Ingredients: Avocado, Almond Butter, Bread")
    .lineLimit(nil)

それが機能しない場合は、次の方法を使用します。

Text("Ingredients: Avocado, Almond Butter, Bread")
    .fixedSize(horizontal: false, vertical: true)
5
Dary

行制限が適用されていなくても、テキストが切り捨てられ続けました。コンテンツをScrollView {}解決しました。

詳細はこちら: https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-horizo​​ntal-and-vertical-scrolling-using-scrollview

1

LineLimit(nil)が機能しない場合は、layoutPriorityを手動で適切な値に設定してください.layoutPriority(0.5)

0
Pacu