gpt4 book ai didi

ios - 根据选择的选项卡更改 Tabview 颜色-Swiftui

转载 作者:行者123 更新时间:2023-12-01 16:05:12 25 4
gpt4 key购买 nike

我正在尝试查看是否可以根据选择的选项卡项更改底部选项卡 View 的颜色。目前我可以在 init 中使用以下代码使 tabview 栏清晰。

let tabBar = UITabBar.appearance()
init() {
tabBar.barTintColor = UIColor.clear
tabBar.backgroundImage = UIImage()
tabBar.shadowImage = UIImage()
}
...
TabView(selection: $selectedTab) {
FirstView()
.tabItem{
Text("First")
}
SecondView()
.tabItem{
Text("Second")
}
}
.onAppear{
setTabViewBackground()
}

func setTabViewBackground() {
if selectedTab != 0 {
tabBar.barTintColor = UIColor.blue
}
}

试图在主体重绘时触发 func,如果这种声明式风格对我来说是最好的,但根本不会改变 tabview 背景,我会知道。

最佳答案

任何.appearance 都会影响 外观本身之后创建的实例。所以解决方案是在外观配置更改后重新创建TabView

这是一个方法演示。已使用 Xcode 12/iOS 14 进行测试。

demo

struct DemoView: View {

let tabBar = UITabBar.appearance()

init() {
tabBar.barTintColor = UIColor.red
}

@State private var selectedTab = 0 // preserves selected tab

var body: some View {
TabView(selection: $selectedTab) {
Text("FirstView")
.tabItem{
Text("First")
}.tag(0)
Text("SecondView")
.tabItem{
Text("Second")
}.tag(1)
}
.onAppear {
setTabViewBackground() // called, because `id` is below
}
.id(selectedTab) // recreates entire above view with new tabbar
}

func setTabViewBackground() {
tabBar.barTintColor = selectedTab != 0 ? .blue : .red
}
}

关于ios - 根据选择的选项卡更改 Tabview 颜色-Swiftui,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63404238/

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