Ios SwiftUI表单中的文本在更改后未换行

Ios SwiftUI表单中的文本在更改后未换行,ios,swift,swiftui,swiftui-list,swiftui-form,Ios,Swift,Swiftui,Swiftui List,Swiftui Form,我需要在SwiftUI表单中显示一些文本,这些文本将根据当前状态而变化。但是,如果“新”文本比表单第一次出现时显示的原始字符串长,则不会正确换行 在下面的示例中,启用切换将更改显示的文本,但它会被截断而不是换行 struct ContentView: View { @State var showLongString = false var body: some View { Form {

我需要在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上不包装)执行不同的操作,而无需进一步增加尾随插入


此问题还有其他解决方法吗?

您可以使用
fixedSize
但将其限制为仅垂直扩展:

Section {
    Text(showLongString ? "This is a string that is too long to fit in one line, This is a string that is too long to fit in one line" : "Hello, World!")
        .fixedSize(horizontal: false, vertical: true)
}
.id(showLongString)

在Xcode 12.1/iOS 14.1中,将fixedSize()添加到textWorks可以正常工作。您使用哪种环境?执行此操作时,文本会自动换行,但在大多数设备上,节本身的大小实际上不会增加。至少没有剪切任何文本,但是没有足够的垂直填充,添加
。padding(.vertical)
将应用填充,即使只有一个文本line@UncommentedCode您可以使用
id()
强制刷新该部分-请参阅更新的答案。