SwiftUI TabBar颜色

时间:2019-10-05 15:22:31

标签: swiftui uitabbaritem

如何设置标签栏颜色?例如,分配黑色结果仅带有灰色条。 这用于SwiftUI。 指定暗模式不适合解决。

Screen shot

    struct ContentView: View {

    @State private var selection = 1



    init() {
        UITabBar.appearance().backgroundColor = UIColor.blue 
        UITabBar.appearance().backgroundImage = UIImage()
        //UITabBar.appearance().isTranslucent = false
        //UITabBar.appearance().shadowImage = UIImage()

    }

    var body: some View {

        TabView {
            ClockView()
                .tabItem {
                    Image("clock")
                    Text("Clock")
            }.tag(0)
            PlanetsNowView()
                .tabItem {
                    Image("clock")
                    Text("Now")
            }.tag(1)
            SettingsView()
                .tabItem {
                    Image("settings")
                    Text("Settings")
            }.tag(2)
        }
        .accentColor(.white)
        .opacity(1)
        //.environment(\.colorScheme, .dark)
    }
}

2 个答案:

答案 0 :(得分:0)

在初始化程序中添加 UITabBar.appearance()。barTintColor = UIColor.blue

但是在Xcode代码帮助中找不到。

enter image description here

struct ContentView: View {

    @State private var selection = 1

    init() {
        UITabBar.appearance().barTintColor = UIColor.blue
        UITabBar.appearance().tintColor = .green
    }

    var body: some View {
        TabView (selection:$selection){
            Text("The First Tab")
                .tabItem {
                    Image(systemName: "1.square.fill")
                    Text("First")
            }
            .tag(1)
            Text("Another Tab")
                .tabItem {
                    Image(systemName: "2.square.fill")
                    Text("Second")
            }.tag(2)
            Text("The Last Tab")
                .tabItem {
                    Image(systemName: "3.square.fill")
                    Text("Third")
            }.tag(3)
        }
        .font(.headline)
        .accentColor(.white)
    }
}

答案 1 :(得分:0)

这是用于在SwiftUI视图中创建黑色标签栏的初始化程序。

import SwiftUI

struct ContentView: View {

  init() {
    setupTabBar()
  }

  var body: some View {
    TabView {
      //Your tab bar items
    }
  }
}

//MARK: - Tab bar view appearance
extension ContentView {
  func setupTabBar() {
    UITabBar.appearance().barTintColor = .black
    UITabBar.appearance().tintColor = .blue
    UITabBar.appearance().layer.borderColor = UIColor.clear.cgColor
    UITabBar.appearance().clipsToBounds = true
  }
}

如果要根据用户的亮/暗模式设置更改颜色:

  • 打开“ Assets.xcassets”文件夹
  • 右键单击资产面板
  • 选择“新颜色集”
  • 打开新颜色的属性检查器面板
  • 选择“外观”
  • 选择“任何黑暗”

现在将有两个彩色正方形,您必须在其中为第一个选择浅色模式颜色,为第二个选择深色模式颜色。

要在初始化标签栏时在代码中使用它,请用新的一组浅色/深色模式颜色的名称更改定义barTintColor的行。

UITabBar.appearance().barTintColor = UIColor(named: "<your color name>")