由于List目前无法配置为删除行分隔符,因此我在ScrollView其VStack内部使用来创建文本元素的垂直布局。下面的例子:
List
ScrollView
VStack
ScrollView { VStack { // ... Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer mattis ullamcorper tortor, nec finibus sapien imperdiet non. Duis tristique eros eget ex consectetur laoreet.") .lineLimit(0) }.frame(width: UIScreen.main.bounds.width) }
生成的结果Text被截断为单行。在a之外,ScrollView它呈现为多行。ScrollView除了明确设置Text框架的高度之外,如何在其他内部实现呢?
Text
在 Xcode 11 GM中 :
对于Text嵌套在滚动视图中的堆栈中的任何视图,请使用.fixedSize(horizontal: false, vertical: true)解决方法:
.fixedSize(horizontal: false, vertical: true)
ScrollView { VStack { Text(someString) .fixedSize(horizontal: false, vertical: true) } }
如果有多个多行文字,这也适用:
ScrollView { VStack { Text(someString) .fixedSize(horizontal: false, vertical: true) Text(anotherLongString) .fixedSize(horizontal: false, vertical: true) } }
如果堆栈的内容是动态的,则可以使用相同的解决方案:
ScrollView { VStack { // Place a single empty / "" at the top of your stack. // It will consume no vertical space. Text("") .fixedSize(horizontal: false, vertical: true) ForEach(someArray) { someString in Text(someString) .fixedSize(horizontal: false, vertical: true) } } }