Ios SwiftUI表单中的文本在更改后未换行
我需要在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 {
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()
强制刷新该部分-请参阅更新的答案。