How do you create a multi-line text inside a ScrollView in SwiftUI?

后端 未结 4 2064
暖寄归人
暖寄归人 2020-11-30 02:12

Since List doesn\'t look like its configurable to remove the row dividers at the moment, I\'m using a ScrollView with a VStack inside

4条回答
  •  独厮守ぢ
    2020-11-30 02:58

    In Xcode 11 GM:

    For any Text view in a stack nested in a scrollview, use the .fixedSize(horizontal: false, vertical: true) workaround:

    ScrollView {
        VStack {
            Text(someString)
                .fixedSize(horizontal: false, vertical: true)
        }
    }
    

    This also works if there are multiple multiline texts:

    ScrollView {
        VStack {
            Text(someString)
                .fixedSize(horizontal: false, vertical: true)
            Text(anotherLongString)
                .fixedSize(horizontal: false, vertical: true)
        }
    }
    

    If the contents of your stack are dynamic, the same solution works:

    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)
            }
        }
    }
    

提交回复
热议问题