gpt4 book ai didi

iOS 15 SwiftUI TabView 标签栏外观不会在 View 之间更新

转载 作者:行者123 更新时间:2023-12-04 17:11:41 32 4
gpt4 key购买 nike

iOS 15 设置TabView的外观取决于加载 View 的滚动位置。但是,这似乎不会在选项卡栏中切换的 View 之间更新。我该如何解决这个问题,以便外观正确更新?

  • 在不滚动内容的情况下打开选项卡式 View (“无 ScrollView ”)使用透明背景作为选项卡栏。
  • 导航到带有滚动内容的选项卡式 View (“ ScrollView ”)后,将使用半透明背景。
  • 但是,当回到“无 ScrollView ”时,半透明背景仍然存在而不是被透明背景取代。

  • 我确实注意到,当我打开控制中心或应用程序切换器并返回时,外观会正确更新。
    no-scrolling view transparent
    scrolling view translucent
    no-scrolling view translucent
    再生产:
    enum Tab {
    case scroll
    case noScroll
    }

    struct ContentView: View {
    @State var selection: Tab = .noScroll

    var body: some View {
    TabView(selection: $selection) {
    Text("Should have a transparent tab bar")
    .tabItem{ Label("No-scroll", systemImage: "xmark.circle") }
    .tag(Tab.noScroll)

    ScrollView {
    VStack(spacing: 10) {
    ForEach(0..<100) {_ in
    Text("Should have a translucent tab bar")
    }
    }
    }
    .tabItem { Label("Scroll", systemImage: "circle") }
    .tag(Tab.scroll)
    }
    }
    }

    最佳答案

    这与@cole 的答案几乎相同,但这是我的解决方案:

    .introspectTabBarController(customize: { controller in

    let appearance = controller.tabBar.standardAppearance
    appearance.configureWithDefaultBackground()
    appearance.backgroundColor = .red
    if #available(iOS 15.0, *) {
    controller.tabBar.scrollEdgeAppearance = appearance
    } else {
    controller.tabBar.standardAppearance = appearance
    }
    })
    使用 introspectTabBarController SwiftUI-Introspect

    关于iOS 15 SwiftUI TabView 标签栏外观不会在 View 之间更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69309689/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com