Skip to content

Commit ee52b7e

Browse files
authored
Обновил картинки в таббаре (#99)
* Доработка - Обновил картинки в таббаре - Убрал дефолтное заполнение картинок - Поправил превью - Сгенерировал новые скриншоты * Поднял версию приложения до 3.3.1
1 parent 6b6b93d commit ee52b7e

24 files changed

+54
-56
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
*.xcbkptlist
22
screenshots/screenshots.html
33
SwiftUI-WorkoutApp.xcodeproj/project.xcworkspace/xcuserdata/oleg991.xcuserdatad/UserInterfaceState.xcuserstate
4+
SwiftUI-WorkoutApp.xcodeproj/project.xcworkspace/xcuserdata/oleg991.xcuserdatad/IDEFindNavigatorScopes.plist

SwiftUI-WorkoutApp.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1216,7 +1216,7 @@
12161216
"$(inherited)",
12171217
"@executable_path/Frameworks",
12181218
);
1219-
MARKETING_VERSION = 3.3.0;
1219+
MARKETING_VERSION = 3.3.1;
12201220
PRODUCT_BUNDLE_IDENTIFIER = com.FGU.WorkOut;
12211221
PRODUCT_NAME = WorkoutApp;
12221222
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -1252,7 +1252,7 @@
12521252
"$(inherited)",
12531253
"@executable_path/Frameworks",
12541254
);
1255-
MARKETING_VERSION = 3.3.0;
1255+
MARKETING_VERSION = 3.3.1;
12561256
PRODUCT_BUNDLE_IDENTIFIER = com.FGU.WorkOut;
12571257
PRODUCT_NAME = WorkoutApp;
12581258
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";

SwiftUI-WorkoutApp/Screens/Root/RootView.swift

Lines changed: 7 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -6,60 +6,15 @@ struct RootView: View {
66
@EnvironmentObject private var defaults: DefaultsService
77

88
var body: some View {
9-
tabView
10-
.animation(.spring(), value: defaults.isAuthorized)
11-
}
12-
}
13-
14-
private extension RootView {
15-
var tabView: some View {
169
TabView(selection: $viewModel.selectedTab) {
17-
SportsGroundsMapView()
18-
.tabItem {
19-
tabItemView(for: .map)
20-
}
21-
.tag(TabViewModel.Tab.map)
22-
EventsListView()
23-
.tabItem {
24-
tabItemView(for: .events)
25-
}
26-
.tag(TabViewModel.Tab.events)
27-
DialogsScreen()
28-
.tabItem {
29-
tabItemView(for: .messages)
30-
}
31-
.tag(TabViewModel.Tab.messages)
32-
.badge(defaults.unreadMessagesCount)
33-
JournalsScreen()
34-
.tabItem {
35-
tabItemView(for: .journal)
36-
}
37-
.tag(TabViewModel.Tab.journal)
38-
ProfileScreen()
39-
.tabItem {
40-
tabItemView(for: .profile)
41-
}
42-
.tag(TabViewModel.Tab.profile)
43-
}
44-
.navigationViewStyle(.stack)
45-
}
46-
47-
func tabItemView(for tab: TabViewModel.Tab) -> some View {
48-
Group {
49-
Text(tab.title)
50-
switch tab {
51-
case .map:
52-
Image.sportsGroundIcon
53-
case .events:
54-
Image(systemName: Icons.Tabbar.events.rawValue)
55-
case .messages:
56-
Image(systemName: Icons.Tabbar.messages.rawValue)
57-
case .journal:
58-
Image(systemName: Icons.Tabbar.journals.rawValue)
59-
case .profile:
60-
Image(systemName: Icons.Tabbar.profile.rawValue)
10+
ForEach(TabViewModel.Tab.allCases, id: \.rawValue) { tab in
11+
tab.screen
12+
.tabItem { tab.tabItemLabel }
13+
.tag(tab)
6114
}
6215
}
16+
.navigationViewStyle(.stack)
17+
.animation(.spring(), value: defaults.isAuthorized)
6318
}
6419
}
6520

@@ -68,6 +23,7 @@ struct ContentView_Previews: PreviewProvider {
6823
static var previews: some View {
6924
RootView()
7025
.environmentObject(DefaultsService())
26+
.environmentObject(TabViewModel())
7127
}
7228
}
7329
#endif

SwiftUI-WorkoutApp/Screens/Root/TabViewModel.swift

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import Foundation
1+
import DesignSystem
2+
import SwiftUI
23

34
final class TabViewModel: ObservableObject {
45
@Published var selectedTab = Tab.map
@@ -7,10 +8,10 @@ final class TabViewModel: ObservableObject {
78
}
89

910
extension TabViewModel {
10-
enum Tab: Int, Hashable {
11+
enum Tab: Int, Hashable, CaseIterable {
1112
case map = 0, events, messages, journal, profile
1213

13-
var title: String {
14+
private var title: String {
1415
switch self {
1516
case .map:
1617
return "Площадки"
@@ -24,5 +25,45 @@ extension TabViewModel {
2425
return "Профиль"
2526
}
2627
}
28+
29+
@ViewBuilder
30+
private var icon: some View {
31+
switch self {
32+
case .map:
33+
Image.sportsGroundIcon
34+
case .events:
35+
Image(systemName: Icons.Tabbar.events.rawValue)
36+
case .messages:
37+
Image(systemName: Icons.Tabbar.messages.rawValue)
38+
case .journal:
39+
Image(systemName: Icons.Tabbar.journals.rawValue)
40+
case .profile:
41+
Image(systemName: Icons.Tabbar.profile.rawValue)
42+
}
43+
}
44+
45+
var tabItemLabel: some View {
46+
Label(
47+
title: { Text(title) },
48+
icon: { icon }
49+
)
50+
.environment(\.symbolVariants, .none)
51+
}
52+
53+
@ViewBuilder
54+
var screen: some View {
55+
switch self {
56+
case .map:
57+
SportsGroundsMapView()
58+
case .events:
59+
EventsListView()
60+
case .messages:
61+
DialogsScreen()
62+
case .journal:
63+
JournalsScreen()
64+
case .profile:
65+
ProfileScreen()
66+
}
67+
}
2768
}
2869
}
5.94 KB
Loading
377 KB
Loading
182 KB
Loading
676 KB
Loading
14.7 KB
Loading
3.25 KB
Loading

0 commit comments

Comments
 (0)