首页 > 解决方案 > 结合 PageTabViewStyle() 和 DefaultTabViewStyle()

问题描述

我想要实现的是 PageTabViewStyle 的水平滚动功能以及 TabView 的背景清晰(因为我通过 ZStack 添加了平铺背景,我希望它在 TabView 和 UITabBar 之间无缝) - 这两个东西都是开箱即用的 PageTabViewStyle

但是,我希望添加到 tabItems 的图标(图像)保持它们的大小和纵横比,并且我想根据选择的选项卡手动切换图标 - 本质上是 DefaultTabViewStyle。(在 PageTabViewStyle 中看起来像是在选定的图标上添加了一个灰色叠加层)

这就是我所拥有的,并注释掉我想要的两种状态之间的 tabViewStyle 切换:

ZStack {
  Image("BackgroundImage")
    .resizable(resizingMode: .tile)
    .background(Color.background)
    .ignoresSafeArea()

  TabView(selection: $selected) {
    Text("page 1").tabItem {Image(selected == 0 ? "1_selected" : "1")}.tag(0)
    Text("page 2").tabItem {Image(selected == 0 ? "2_selected" : "2")}.tag(0)
  }
  // .tabViewStyle(PageTabViewStyle())
}

旁注:我用 swift/xcode 编程已经有好几年了,所以我有点生疏了,但是 SwiftUI 文档是怎么回事?我尝试比较Apple Developer Docs 中的两种结构,但页面没有关于两种 TabViewStyles 有何不同的信息,或者如何编辑 TabViewStyle 的任何方面以获得他们想要的行为(因此我在这里发布) - 我觉得这类问题的答案应该可以通过阅读文档来找到,但我一辈子都找不到足够的 SwiftUI 结构和协议文档

标签: iosswiftui

解决方案


推荐阅读