SwiftUI - 嵌入 ScrollView 后文本被截断

Posted

技术标签:

【中文标题】SwiftUI - 嵌入 ScrollView 后文本被截断【英文标题】:SwiftUI - text gets truncated after embedded on a ScrollView 【发布时间】:2019-08-28 17:03:08 【问题描述】:

在文本视图中添加长文本时,它会按预期工作(未截断)。

Xcode 11.0 测试版 6 (11M392q)

import SwiftUI

struct ContentView: View 

    var body: some View 



                Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.")

                    .lineLimit(nil)



                
            



struct ContentView_Previews: PreviewProvider 
    static var previews: some View 
        ContentView()
    

但是当嵌入到 ScrollView 中时,它会被截断(不是预期的):

import SwiftUI

struct ContentView: View 

    var body: some View 

        ScrollView 

                Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.")

                    .lineLimit(nil)


                   
                
            



struct ContentView_Previews: PreviewProvider 
    static var previews: some View 
        ContentView()
    

我尝试设置一个 .lineLimit(nil) 修饰符,但也没有避免截断文本。

这是 SwiftUI 文本的预期行为吗?还是bug?

如果有人可以提供帮助,不胜感激! :)

干杯

【问题讨论】:

ios14、iOS 15 也会出现这个问题,当使用 LazyHGrid 时,Text 没有正确提供自己的高度 :) 【参考方案1】:

Text("你的长文本放在这里") .fixedSize(水平:假,垂直:真)

应该能解决问题。

编辑:这是 iOS 13.1 beta 1 及更高版本中的默认设置。

【讨论】:

【参考方案2】:

这个问题的解决方案(似乎是 SwiftUI Xcode Beta 6 的一个错误),是使用下面的修饰符:

.frame(idealHeight: .greatestFiniteMagnitude)

【讨论】:

以上是关于SwiftUI - 嵌入 ScrollView 后文本被截断的主要内容,如果未能解决你的问题,请参考以下文章

远程图像使用 List 正确加载,但在使用带有嵌入式 VStack 的 ScrollView 和 SwiftUI 时不加载

SwiftUI 垂直 ScrollView 弹回并不显示其中的所有视图

SwiftUI - 如何在运行时更改内部内容后获取 ScrollView 内容高度

在 SwiftUI 中的 tabview 中嵌入 webview

SwiftUI:奇怪的行为 ScrollView

ScrollView 位置数据 / SwiftUi