我无法在SwiftUI中更改TabBar颜色。我尝试使用TabbedView,图像/文本和堆栈。什么都不适合我。
使用.foregroundColor
无效。
TabbedView(selection: $selection){
TextView()
.tag(0)
.tabItemLabel(
VStack {
Image("Calendar")
.foregroundColor(.red)
Text("Appointments")
.foregroundColor(.red)
}
).foregroundColor(.red)
}.foregroundColor(.red)
答案 0 :(得分:16)
解决方案1
使用renderingMode(.template)
struct MainView: View {
var body: some View {
TabView {
LoginView().tabItem {
VStack {
Text("Login")
Image("login").renderingMode(.template)
}
}
HomeView().tabItem {
VStack {
Text("Home")
Image("home").renderingMode(.template)
}
}
}.accentColor(.orange)
}
}
解决方案2
设置tabItem类型
enum TabViewItemType: String {
case login = "login"
case home = "home"
case search = "search"
var image: Image {
switch self {
case .login: return Image("login")
case .home: return Image("home")
case .search: return Image("search")
}
}
var text: Text {
Text(self.rawValue)
}
}
struct MainView: View {
var body: some View {
TabView {
LoginView()
.tabItem { TabViewItem(type: .login) }
HomeView()
.tabItem { TabViewItem(type: .home) }
SearchView()
.tabItem { TabViewItem(type: .search) }
}.accentColor(.orange)
}
}
struct TabViewItem: View {
var type: TabViewItemType
var body: some View {
VStack {
type.image.renderingMode(.template)
type.text
}
}
}
答案 1 :(得分:10)
使用accentColor
:
TabView(selection: $selection) {
NavigationView {
HomeView()
}.navigationBarTitle("Home")
.tabItem {
VStack {
if selection == 0 {
Image(systemName: "house.fill")
} else {
Image(systemName: "house")
}
Text("Home")
}
}
.tag(0)
NavigationView {
SettingsView()
}.navigationBarTitle("Settings")
.tabItem {
VStack {
Image(systemName: "gear")
Text("Settings")
}
}
.tag(1)
}.accentColor(.purple)
答案 2 :(得分:1)
我认为您可以只使用TabView的accentColor,它对我有用:]
select * from table where '2020-10-08 12:15:10' between startDate and endDate
答案 3 :(得分:0)
当前SwiftUI
尚无直接方法。
除非UIKit
引入任何新的解决方案,否则我们必须使用SwiftUI
方法。
尝试以下代码:
struct ContentView: View {
init() {
UITabBar.appearance().backgroundColor = UIColor.purple
}
var body: some View {
return TabbedView {
Text("This is tab 1")
.tag(0)
.tabItem {
Text("tab1")
}
Text("This is tab 2")
.tag(1)
.tabItem {
Text("tab1")
}
Text("This is tab 3")
.tag(2)
.tabItem {
Text("tab1")
}
}
}
}
答案 4 :(得分:0)
我为Image进行了扩展,该扩展使用具有浅色的UIImage初始化:
extension Image {
init(_ named: String, tintColor: UIColor) {
let uiImage = UIImage(named: named) ?? UIImage()
let tintedImage = uiImage.withTintColor(tintColor,
renderingMode: .alwaysTemplate)
self = Image(uiImage: tintedImage)
}
}
答案 5 :(得分:0)
您可以使用 UITabBar.appearance()进行一些自定义,直到Apple提供了更标准的方式来更新SwiftUI TabView
更改TabItem(文本+图标)颜色
init() {
UITabBar.appearance().unselectedItemTintColor = UIColor.white
}
更改TabView背景颜色
init() {
UITabBar.appearance().backgroundColor = UIColor.red
UITabBar.appearance().backgroundImage = UIImage()
}
总体代码如下-
struct ContentView: View {
init() {
// UITabBar customization
}
var body: some View {
TabView(selection: $selection) {
FirstTabView()
.tabItem {
VStack {
Image(systemName: "map")
Text("Near Me")
}
}
}
}
}
使用 .accentColor 修改器更改所选 tabItem
的颜色尝试了许多选择之后,这对我有用。
答案 6 :(得分:0)