ContentView.swift
// // ContentView.swift // Swiftuitest // // Created by Cairocoders // import SwiftUI struct ContentView: View { @State var index = 0 var body: some View { VStack { ZStack { if self.index == 0 { Color.green.edgesIgnoringSafeArea(.top) VStack { Text("Home").foregroundColor(Color.white) Image(systemName: "house.fill") .resizable() .frame(width: 200, height: 200) } } else if self.index == 1 { Color.blue.edgesIgnoringSafeArea(.top) VStack { Text("Profile").foregroundColor(Color.white) Image(systemName: "person.fill") .resizable() .frame(width: 200, height: 200) } } else if self.index == 2 { Color.red.edgesIgnoringSafeArea(.top) VStack { Text("Notification").foregroundColor(Color.white) Image(systemName: "bell.fill") .resizable() .frame(width: 200, height: 200) } } else{ Color.yellow.edgesIgnoringSafeArea(.top) VStack { Text("Cart").foregroundColor(Color.white) Image(systemName: "cart.fill") .resizable() .frame(width: 200, height: 200) } } } CustomTabBar(index: $index) }.animation(.spring()) } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }CustomTabBar.swift
// // CustomTabBar.swift // Swiftuitest // // Created by Cairocoders // import SwiftUI struct CustomTabBar : View { @Binding var index : Int var body: some View { HStack(spacing: 15) { HStack { Image(systemName: "house.fill") .resizable() .frame(width: 35, height: 30) Text(self.index == 0 ? "Home" : "") .fontWeight(.light) .font(.system(size:14)) }.padding(15) .background(self.index == 0 ? Color.green.opacity(0.5) : Color.clear) .clipShape(Capsule()) .onTapGesture { self.index = 0 } HStack { Image(systemName: "person.fill") .resizable() .frame(width: 35, height: 30) Text(self.index == 1 ? "Profile" : "") .fontWeight(.light) .font(.system(size:14)) }.padding(15) .background(self.index == 1 ? Color.blue.opacity(0.5) : Color.clear) .clipShape(Capsule()) .onTapGesture { self.index = 1 } HStack { Image(systemName: "bell.fill") .resizable() .frame(width: 35, height: 30) Text(self.index == 2 ? "Notification" : "") .fontWeight(.light) .font(.system(size:14)) }.padding(15) .background(self.index == 2 ? Color.red.opacity(0.5) : Color.clear) .clipShape(Capsule()) .onTapGesture { self.index = 2 } HStack { Image(systemName: "cart.fill") .resizable() .frame(width: 35, height: 30) Text(self.index == 3 ? "Cart" : "") .fontWeight(.light) .font(.system(size:14)) }.padding(15) .background(self.index == 3 ? Color.yellow.opacity(0.5) : Color.clear) .clipShape(Capsule()) .onTapGesture { self.index = 3 } }.padding(.top, 8) .frame(width: UIScreen.main.bounds.width) .background(Color.white) .animation(.default) } } struct CustomTabBar_Previews: PreviewProvider { @State static var index = 0 static var previews: some View { CustomTabBar(index: $index) } }