一尘不染

如何在SwiftUI中的ScrollView中创建多行文本?

swift

由于List目前无法配置为删除行分隔符,因此我在ScrollViewVStack内部使用来创建文本元素的垂直布局。下面的例子:

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框架的高度之外,如何在其他内部实现呢?


阅读 477

收藏
2020-07-07

共1个答案

一尘不染

Xcode 11 GM中

对于Text嵌套在滚动视图中的堆栈中的任何视图,请使用.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)
        }
    }
}
2020-07-07