簡體   English   中英

tvOS SwiftUI TabView 動態改變條形顏色

[英]tvOS SwiftUI TabView Dynamically Change Bar Color

我有一個頂部有 TabView 的 tvOS 應用程序。 我想使用 TabView 的背景顏色來指示狀態。 最初它是紅色的,當其中一個視圖發生某些事情時,我想將 TabView 的背景顏色更改為綠色。

我在我的init()中使用UITabBar.appearance().barTintColor = UIColor.red將初始顏色設置為紅色,但我找不到在稍后執行時將其更改為綠色的方法。

struct ContentView: View {
    @State private var selection = 1

    init() {
        UITabBar.appearance().barTintColor = UIColor.red
    }

    var body: some View {
        TabView (selection:$selection){
            Tab1View()
                .tabItem {
                    Image(systemName: "1.square.fill")
                    Text("Tab 1")
            }
            .tag(1)
            Tab2View()
                .tabItem {
                    Image(systemName: "2.square.fill")
                    Text("Tab 2")
            }.tag(2)
            Tab3View()
                .tabItem {
                    Image(systemName: "3.square.fill")
                    Text("Tab 3")
            }.tag(3)
        }
        .font(.headline)
        .accentColor(.white)
        .ignoresSafeArea()
    }
}

您可以使用下面的代碼。

import SwiftUI

struct ContentView: View {
   
  @State private var selectedTab = 0
  var tabViewTitle = ["First Page","Second Page","Third Page"]
  var body: some View {
    VStack {
      TabView(selection: $selectedTab){
        Text(tabViewTitle[0])
          .tag(0)
        Text(tabViewTitle[1])
          .tag(1)
        Text(tabViewTitle[2])
          .tag(2)
      }
      .frame(width: 300, height: 500)
      .tabViewStyle(PageTabViewStyle())
      .background(Color.purple)
      .cornerRadius(15)
    }
    .tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
    HStack(spacing: 16) {
        ForEach(tabViewTitle, id: \.self) { index in
            Rectangle()
                .fill(self.selectedTab == tabViewTitle.firstIndex(where: {$0 == index}) ?  Color.purple : Color.purple.opacity(0.5))
                .frame(width: self.selectedTab == tabViewTitle.firstIndex(where: {$0 == index}) ? 16 : 12,height: self.selectedTab == tabViewTitle.firstIndex(where: {$0 == index}) ? 16 : 12)
        }
    }
    .padding()
  }
}

struct ContentView_Previews: PreviewProvider {
  static var previews: some View {
    ContentView()
  }
} 

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM