选项卡视图选项卡项的选定选项卡图像在SwiftUI中始终为蓝色
我在SwiftUI中使用一个选项卡视图,可以设置当前未选中的选项卡的图像,但是,为选中的选项卡设置图像似乎不起作用。我看到的是一个蓝色的圆圈,而不是黑色的 这是我的密码:选项卡视图选项卡项的选定选项卡图像在SwiftUI中始终为蓝色,swift,swiftui,ios13,Swift,Swiftui,Ios13,我在SwiftUI中使用一个选项卡视图,可以设置当前未选中的选项卡的图像,但是,为选中的选项卡设置图像似乎不起作用。我看到的是一个蓝色的圆圈,而不是黑色的 这是我的密码: import SwiftUI struct MainView: View { @State private var selected = 0 var body: some View { TabView(selection: $selected){ Text("Fir
import SwiftUI
struct MainView: View {
@State private var selected = 0
var body: some View {
TabView(selection: $selected){
Text("First View")
.tabItem {
Image(self.selected == 0 ? "eclipse-tab-icon-black" : "eclipse-tab-icon-grey")
.renderingMode(.original)
}.tag(0)
Text("Second View")
.tabItem {
Image(systemName: "2.circle")
}.tag(1)
Text("Third View")
.tabItem {
Image(systemName: "3.circle")
}.tag(1)
}
}
}
struct MainView_Previews: PreviewProvider {
static var previews: some View {
MainView()
}
}
正如您在这里看到的,未选择的选项卡是灰色的。这是正确的:
但所选选项卡为蓝色,而不是黑色:
资产:
资产设置:
将图像的渲染模式更改为“原始”。在xcassets文件夹上,或使用代码中的renderingMode修改器。将图像的渲染模式更改为原始模式。无论是在xcassets文件夹上,还是在代码中使用renderingMode修改器。您没有在选项卡视图上设置“选定”和“未选定”图标,您只提供一个图像,并且在未选定时以次颜色渲染,在选定时以强调色渲染。
如果您希望所选选项卡图标为黑色,您可以将TabView上的重点颜色设置为黑色,但这违反了Apple的设计准则,您还将更改所有子视图的重点颜色。您没有在TabView上设置“已选”和“未选”图标,您只提供一个图像,未选中时以副色渲染,选中时以强调色渲染。 如果您希望所选选项卡图标为黑色,您可以将TabView上的重点颜色设置为黑色,但这违反了苹果的设计准则,您还将更改所有子视图的重点颜色。使用.accentColor.black
import SwiftUI
struct ContentView: View {
@State private var selection = 0
var body: some View {
TabView(selection: $selection){
Text("First View")
.font(.title)
.tabItem {
VStack {
Image("first")
Text("First")
}
}
.tag(0)
Text("Second View")
.font(.title)
.tabItem {
VStack {
Image("second")
Text("Second")
}
}
.tag(1)
}.accentColor(.black)
}
}
使用.accentColor.black
import SwiftUI
struct ContentView: View {
@State private var selection = 0
var body: some View {
TabView(selection: $selection){
Text("First View")
.font(.title)
.tabItem {
VStack {
Image("first")
Text("First")
}
}
.tag(0)
Text("Second View")
.font(.title)
.tabItem {
VStack {
Image("second")
Text("Second")
}
}
.tag(1)
}.accentColor(.black)
}
}
使用选项卡视图的颜色
TabView(selection: $selected) {
SwiftUIMyData()
.tabItem {
Image(systemName: "rectangle.fill.on.rectangle.fill")
Text("My Data")
}
.tag(0)
SwiftUIMyContent()
.tabItem {
Image(systemName: "desktopcomputer")
Text("My Content")
}
.tag(1)
}.accentColor(.black)
使用选项卡视图的颜色
TabView(selection: $selected) {
SwiftUIMyData()
.tabItem {
Image(systemName: "rectangle.fill.on.rectangle.fill")
Text("My Data")
}
.tag(0)
SwiftUIMyContent()
.tabItem {
Image(systemName: "desktopcomputer")
Text("My Content")
}
.tag(1)
}.accentColor(.black)
如果要为选项卡视图提供自己的PNG图像,请使用渲染模式模板,以便将默认颜色应用于图像的非背景位 如果在“资产”文件夹中发现此操作最简单。或者,您可以将其编码为:
Image("myImage").renderingMode(.template)
如果要为选项卡视图提供自己的PNG图像,请使用渲染模式模板,以便将默认颜色应用于图像的非背景位 如果在“资产”文件夹中发现此操作最简单。或者,您可以将其编码为:
Image("myImage").renderingMode(.template)
我本来会这么做的,但我的情况有点不同。我的两个图标相同,例如未选择时为灰色,选择时为黑色,而其中一个图标在选择时有两种不同的颜色,未选择时为灰色。我目前正在自定义生成一个选项卡,因为我找不到解决方案@Lulugain说构建一个定制的是唯一的解决方案。我最终构建了一个定制的,这花了我几分钟的时间。我真的很惊讶这是多么容易。我本来会这么做的,但我的情况有点不同。我的两个图标相同,例如未选择时为灰色,选择时为黑色,而其中一个图标在选择时有两种不同的颜色,未选择时为灰色。我目前正在自定义生成一个选项卡,因为我找不到解决方案@Lulugain说构建一个定制的是唯一的解决方案。我最终构建了一个定制的,这花了我几分钟的时间。我真的很惊讶这是多么容易。