SwiftUI - 嵌入 ScrollView 后文本被截断
SwiftUI - text gets truncated after embedded on a ScrollView
在文本视图中添加长文本时,它按预期工作(未截断)。
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 文本的预期行为吗?或者这是一个错误?
如果有人能提供帮助,我们将不胜感激! :)
干杯
这个问题的解决方案(似乎是 SwiftUI Xcode Beta 6 的一个错误),是使用下面的修饰符:
.frame(idealHeight: .greatestFiniteMagnitude)
Text("Your long text goes here")
.fixedSize(horizontal: false, vertical: true)
应该可以解决问题。
这是 iOS 13.1 beta 1 及更高版本中的默认设置。
在文本视图中添加长文本时,它按预期工作(未截断)。
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 文本的预期行为吗?或者这是一个错误?
如果有人能提供帮助,我们将不胜感激! :)
干杯
这个问题的解决方案(似乎是 SwiftUI Xcode Beta 6 的一个错误),是使用下面的修饰符:
.frame(idealHeight: .greatestFiniteMagnitude)
Text("Your long text goes here")
.fixedSize(horizontal: false, vertical: true)
应该可以解决问题。
这是 iOS 13.1 beta 1 及更高版本中的默认设置。