Я создал TabBar
с тремя элементами.
enum TabItem : CaseIterable {
case market
case interest
case wallet
}
struct TabBar: View {
@State var tappedItem: TabItem = .market
let tappedBackground = Color.primaryColor.opacity(0.2)
var body: some View {
HStack {
TabBarItem(icon: "aqi.medium")
.onTapGesture {
self.tappedItem = .market
}
.background(self.tappedItem == .market ? tappedBackground : Color.white)
.cornerRadius(20)
.animation(.linear, value: tappedItem)
TabBarItem(icon:"list.bullet.rectangle.portrait")
.onTapGesture {
self.tappedItem = .interest
}
.background(self.tappedItem == .interest ? tappedBackground : Color.white)
.cornerRadius(20)
.animation(.linear, value: tappedItem)
TabBarItem(icon: "wallet.pass")
.onTapGesture {
self.tappedItem = .wallet
}
.background(self.tappedItem == .wallet ? tappedBackground : Color.white)
.cornerRadius(20)
.animation(.linear, value: tappedItem)
}
}
}
Нажатый элемент изменит цвет фона на Color.primaryColor.opacity(0.2)
, а все остальные на Color.white
.
Вместо Color.white
как получить цвет фона системы по умолчанию?
Вы можете использовать инициализатор Color(uiColor:)
, т.е.
Color(uiColor: .systemBackground)
Вы можете попробовать
nil
илиColor.clear
вместоColor.white
, чтобы просвечивать основной фон.