SwiftUI - ScrollView 的宽度为 0,我的内容不可见
Posted
技术标签:
【中文标题】SwiftUI - ScrollView 的宽度为 0,我的内容不可见【英文标题】:SwiftUI - ScrollView has 0 width and my content is not visible 【发布时间】:2020-01-10 18:16:42 【问题描述】:我正在尝试将滚动视图用于可滚动内容,但是每当我将视图嵌套在滚动视图中时,我注意到我的堆栈中的视图消失回视图层次结构中,并且屏幕上没有任何内容可见。我还看到,每当我使用 ScrollView 时,它都会添加另一个 Hosting View Controller,我不知道这是否是正常行为。
var body: some View
NavigationView
ScrollView(.vertical, showsIndicators: false)
VStack
ForEach(bookLibrary.indices, id: \.self) index in
HStack
ForEach(self.bookLibrary[index], id: \.self) book in
BookView(book: book)
获取此视图层次结构。还可以看到 HostingScrollView 的宽度为 0。
【问题讨论】:
你不应该关心ScrollView
的内部实现。如果您构建正确的内容,它就会起作用。
问题不在于您提供给我们的代码...
【参考方案1】:
如果您不想使用GeometryReader
,只需像这样插入具有正确宽度的零高度视图
var body: some View
ScrollView
VStack
Color.clear
.frame(maxWidth: .infinity, maxHeight: 0)
ForEach(...) each in
...
【讨论】:
【参考方案2】:虽然不是一个完美的解决方案,但您可以使用 GeometryReader 将滚动视图的框架设置为与其父视图相同的宽度。
NavigationView
GeometryReader geometry in
ScrollView(.vertical)
// TODO: Add content
.frame(width: geometry.size.width)
此解决方法的灵感来自 Rob Mayoff's answer 在另一个问题上。
【讨论】:
以上是关于SwiftUI - ScrollView 的宽度为 0,我的内容不可见的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI:如何将 ScrollView 的位置设置为左上角? (两个滚动都已启用)