現在の状態に応じて変化する SwiftUI フォームにテキストを表示する必要があります。ただし、「新しい」テキストが、フォームが最初に表示されたときに表示された元の文字列よりも長い場合、正しく折り返されません。
以下の例では、トグルをオンにすると表示されるテキストが変更されますが、折り返しではなく切り捨てられます。
struct ContentView: View {
@State var showLongString = false
var body: some View {
Form {
Section {
Text(showLongString ? "This is a string that is too long to fit in one line" : "Hello, World!")
}
Section {
Toggle("Show long string", isOn: $showLongString)
}
}
}
}
私が見つけることができる唯一の回避策は.listRowInsets
、末尾のインセットを使用して増やすことですが、これは理想的ではなく、スケーリングが異なるデバイスに応じてパフォーマンスが異なります (つまり、iPhone 12 ではラップする可能性がありますが、iPhone 11/XR ではラップしません)。末尾のインセットをさらに増やすことなく。
この問題の他の回避策はありますか?