SwiftUI问题:ScrollView无法滚动至长文本末尾该如何解决?
SwiftUI ScrollView 文本截断、无法滚动的解决方案
问题原因
你的代码中给Text添加了maxHeight: .infinity的frame约束,这会强制Text撑满ScrollView的可用高度,而非根据内容自适应高度。ScrollView需要子视图有明确的内容高度才能触发滚动逻辑,因此文本过长时会被截断,且无法滚动。
解决方案
方案1:直接移除Text的无限高度约束
让Text根据内容自动计算高度,ScrollView就能正常识别内容长度并允许滚动:
ScrollView { Text(self.outputData ?? "na") .frame(maxWidth: .infinity) // 仅保留宽度撑满的需求 } .frame(maxHeight: .infinity) .padding()
方案2:兼顾短文本居中与长文本滚动
如果需要在内容较短时让文本垂直居中,内容较长时自动滚动,可以用VStack配合Spacer实现:
ScrollView { VStack { Spacer() Text(self.outputData ?? "na") .frame(maxWidth: .infinity) Spacer() } } .frame(maxHeight: .infinity) .padding()
内容的提问来源于stack exchange,提问作者János
相关产品推荐
相关产品推荐

