SwiftUI:在 ScrollView 或 List 中时,PageTabViewStyle() 新损坏?
Posted
技术标签:
【中文标题】SwiftUI:在 ScrollView 或 List 中时,PageTabViewStyle() 新损坏?【英文标题】:SwiftUI: PageTabViewStyle() newly broken when inside ScrollView or List? 【发布时间】:2021-05-25 18:13:21 【问题描述】:所以这个错误突然出现了。我有一个带有 PageTabViewStyle() 的 TabView,用于在 ScrollView 中显示图像。图片下方是其他内容(标题、文本等,与本示例无关)。
过去一切正常,但在最近的更新之后,PageTabView 在 ScrollView 或 List 中无法正确显示!我测试了用 VStack 替换 ScrollView,它看起来应该如此 - 但我失去了我想要的功能,即带有图像和文本的滚动视图。
它应该看起来如何(直到最近才看起来):https://imgur.com/a/6hEk0x7
现在的样子:https://imgur.com/a/ZFhk1XO
任何解决方案将不胜感激!
// images is an array of identifiable strings, corresponding to images in assets
ScrollView
TabView
ForEach(images) image in
Image(image)
.resizable()
.scaledToFill()
.frame(width: UIScreen.main.bounds.width - 32, height: UIScreen.main.bounds.height / 3.5)
.clipShape(RoundedRectangle(cornerRadius: 20))
//: ForEach
//: TabView
.tabViewStyle(PageTabViewStyle())
// other content (header, text etc)...
【问题讨论】:
图片下方的其他内容是否也横向滚动? 不,其他内容应该垂直滚动(现在我发现我错误地输入了 HStack 而不是 VStack,抱歉造成混淆)。所以要清楚,一切都应该垂直滚动(经典的细节视图)。唯一的水平滚动应该在 TabView 中启用,在图像本身上。 【参考方案1】:如果您将 PageTabView 嵌入到 ScrollView 中,则显式指定 TabView 的高度:
ScrollView(.vertical, showsIndicators: false)
TabView
Image("imageName")
.resizable()
.scaledToFill()
.tabViewStyle(PageTabViewStyle())
.frame(height: 300)
您可以根据需要自定义。
【讨论】:
成功了,谢谢!以上是关于SwiftUI:在 ScrollView 或 List 中时,PageTabViewStyle() 新损坏?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swiftui 中与其他组件一起在 ScrollView 或 VStack 中完全显示 Picker?
SwiftUI 中 ScrollView 中 VStack 中元素的神秘间距或填充
水平 ScrollView (SwiftUI) 中的动画展开/折叠组