diff --git a/FakeNFT/Models/Network/Nft.swift b/FakeNFT/Models/Network/Nft.swift index 59e761a821..a3b08ce7a6 100644 --- a/FakeNFT/Models/Network/Nft.swift +++ b/FakeNFT/Models/Network/Nft.swift @@ -1,6 +1,11 @@ -import Foundation +import SwiftUI -struct Nft: Decodable { +struct Nft: Identifiable, Hashable, Codable { let id: String - let images: [URL] + let name: String + let images: [String] + let description: String + let rating: Int + let price: Double + let author: String } diff --git a/FakeNFT/Resources/Assets.xcassets/Images/blueSomething.imageset/6ae4f0cf45e2cd5c9240b70315e8ba1b67613527.png b/FakeNFT/Resources/Assets.xcassets/Images/blueSomething.imageset/6ae4f0cf45e2cd5c9240b70315e8ba1b67613527.png new file mode 100644 index 0000000000..5eaa9ea1da Binary files /dev/null and b/FakeNFT/Resources/Assets.xcassets/Images/blueSomething.imageset/6ae4f0cf45e2cd5c9240b70315e8ba1b67613527.png differ diff --git a/FakeNFT/Resources/Assets.xcassets/Images/blueSomething.imageset/Contents.json b/FakeNFT/Resources/Assets.xcassets/Images/blueSomething.imageset/Contents.json new file mode 100644 index 0000000000..edc6ccc700 --- /dev/null +++ b/FakeNFT/Resources/Assets.xcassets/Images/blueSomething.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "6ae4f0cf45e2cd5c9240b70315e8ba1b67613527.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FakeNFT/Scenes /ContentView.swift b/FakeNFT/Scenes /ContentView.swift index ca5c83f0db..142928eacd 100644 --- a/FakeNFT/Scenes /ContentView.swift +++ b/FakeNFT/Scenes /ContentView.swift @@ -9,24 +9,26 @@ import SwiftUI struct ContentView: View { + @State private var isTabBarHidden = false @State private var selectedTab = Tab.profile + @StateObject private var cartViewModel = CartViewViewModel() var body: some View { ZStack(alignment: .bottom) { - NavigationStack { - TabView(selection: $selectedTab) { - Text("Profile") - .tag(Tab.profile) - - Text("Catalog") - .tag(Tab.catalog) - - Text("Cart") - .tag(Tab.cart) - - Text("Statistics") - .tag(Tab.statistics) - } + TabView(selection: $selectedTab) { + Text("Profile") + .tag(Tab.profile) + + Text("Catalog") + .tag(Tab.catalog) + + Text("Cart") + .tag(Tab.catalog) + + Text("Statistics") + .tag(Tab.statistics) + } + if !isTabBarHidden { TabBarView(selectedTab: $selectedTab) } } diff --git a/FakeNFT/Scenes /TabBar/TabBarView.swift b/FakeNFT/Scenes /TabBar/TabBarView.swift index a71d6da48f..01ef9788ed 100644 --- a/FakeNFT/Scenes /TabBar/TabBarView.swift +++ b/FakeNFT/Scenes /TabBar/TabBarView.swift @@ -23,6 +23,9 @@ struct TabBarView: View { } } .padding(.horizontal) + .onAppear { + setupTabBarAppearance() + } } private func tabItemView(for tab: Tab) -> some View { @@ -35,6 +38,12 @@ struct TabBarView: View { } .frame(maxWidth: .infinity) } + private func setupTabBarAppearance() { + let tabBarAppearance = UITabBarAppearance() + tabBarAppearance.configureWithOpaqueBackground() + tabBarAppearance.shadowColor = .clear + UITabBar.appearance().standardAppearance = tabBarAppearance + } } #Preview { diff --git a/FakeNFT/Scenes /ViewModifier/NavigationBarStyle.swift b/FakeNFT/Scenes /ViewModifier/NavigationBarStyle.swift index 0270c637be..43ef95d464 100644 --- a/FakeNFT/Scenes /ViewModifier/NavigationBarStyle.swift +++ b/FakeNFT/Scenes /ViewModifier/NavigationBarStyle.swift @@ -16,6 +16,7 @@ struct NavigationBarStyle: ViewModifier { let title: String? let backButtonHidden: Bool let filterButtonHidden: Bool + let isTabBarHidden: Binding? var filterButtonTapHandler: () -> Void? // MARK: - Initializers @@ -23,11 +24,13 @@ struct NavigationBarStyle: ViewModifier { init(title: String?, backButtonHidden: Bool, filterButtonHidden: Bool, + isTabBarHidden: Binding? = nil, filterButtonTapHandler: @escaping () -> Void? ) { self.title = title self.backButtonHidden = backButtonHidden self.filterButtonHidden = filterButtonHidden + self.isTabBarHidden = isTabBarHidden self.filterButtonTapHandler = filterButtonTapHandler setupNavigationBarAppearance() } @@ -55,6 +58,7 @@ struct NavigationBarStyle: ViewModifier { private var backButton: some View { Button { + isTabBarHidden?.wrappedValue = false dismiss() } label: { Image("backButton")