I'm trying to change tint color for View.
What I got:
var body: some View {
Button {
selectedTab = title
} label: {
VStack(alignment: .center) {
image.renderingMode(.template)
Text(title)
}
.foregroundColor(selectedTab == title ? .accentColor : .black.opacity(0.2))
.padding()
}
}
The problem:
When I use .accentColor(Color) in superview for this subview, Xcode said:

So, I use, like in docs: apple docs Use this method to override the default accent color for this view. :
if #available(iOS 15.0, *) {
CustomTabView(tabs: "").tint(.red)
} else {
CustomTabView(tabs: "").accentColor(.green)
}
Accent color work fine, but .tint doesn't. What I do wrong?


Your code doesn't work because when you use
tint, and you select the tab, the tab's color gets overridden by theforegroundColormodifier. It'd set the tab's color to.accentColor, which is independent from the color thattintsets. The deprecatedaccentColorhowever, does set it, so that's why the deprecatedaccentColormodifier works.One way to work around this is simply not use
.accentColorfor the foreground color. Usenilinstead:When it is nil, it will not override the tint.