在我的應用程式中,我有 2 個標簽。
第一個選項卡視圖具有白色背景。
第二個 tabView 有黑色背景。
因此,我想根據選擇的 TabBarItem 更改標簽欄樣式
選擇 tab1 時,我希望標簽欄圖示顏色為:
selected - black, unselected - grey
選擇 tab2 時,我想將顏色更改為:
selected - white, unselected - grey
我可以使用這樣的accentColor屬性更改圖示顏色:
TabView {
FirstTabView()
.tabItem {
Image("tab1").renderingMode(.template)
}
SecondTabView()
.tabItem {
Image("tab2").renderingMode(.template)
}
}.accentColor(.white)
但是當用戶單擊第二個選項卡時如何更改圖示顏色?
我試過這樣的事情:
@State private var selection = 0
TabView(selection: $selection) {
FirstTabView()
.tabItem {
Image("tab1").renderingMode(.template)
}
SecondTabView()
.tabItem {
Image("tab2").renderingMode(.template)
}
}.accentColor(selection == 0 ? .black : .white)
但它不起作用
uj5u.com熱心網友回復:
要更新選項卡專案TabView應該重建,所以嘗試
這是一個完整的演示(更改顏色以獲得更好的可見性)。使用 Xcode 13 / iOS 15 測驗

struct DemoView: View {
@State private var selection = 0
var body: some View {
TabView(selection: $selection) {
Text("FirstTabView")
.tabItem {
Image(systemName: "1.circle").renderingMode(.template)
}.tag(0)
Text("SecondTabView")
.tabItem {
Image(systemName: "2.circle").renderingMode(.template)
}.tag(1)
}
.accentColor(selection == 0 ? .red : .blue)
.id(selection) // << here !!
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/371256.html
上一篇:如何通過x和y坐標點擊iOS?
