Mercurial > public > geoquiz
annotate GeoQuiz/GuessTheFlagView.swift @ 23:02dcebb8cc4a
fix layout issues
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Thu, 27 Oct 2022 09:17:13 +0200 |
parents | b145c408f791 |
children | 425078c01194 |
rev | line source |
---|---|
0 | 1 // |
2 // GuessTheFlagView.swift | |
3 // GeoQuiz | |
4 // | |
5 // Created by Dennis Concepción Martín on 20/9/22. | |
6 // | |
7 | |
8 import SwiftUI | |
9 | |
10 struct GuessTheFlagView: View { | |
19 | 11 @StateObject var game = CountryGameController() |
0 | 12 |
15
f1967f8cc67b
first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents:
11
diff
changeset
|
13 @Environment(\.managedObjectContext) var moc |
f1967f8cc67b
first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents:
11
diff
changeset
|
14 |
0 | 15 var body: some View { |
16 ZStack { | |
17 LinearGradient(gradient: .main, startPoint: .top, endPoint: .bottom) | |
18 .ignoresSafeArea() | |
19 | |
3 | 20 GeometryReader { geo in |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
21 VStack { |
6 | 22 GameToolbar(game: game, color: .mayaBlue) |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
23 .padding(.bottom) |
0 | 24 |
11 | 25 VStack(alignment: .center, spacing: 10) { |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
26 Text("Question \(game.questionCounter) of \(game.data.count)") |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
27 .font(.title3) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
28 .foregroundColor(.white.opacity(0.7)) |
6 | 29 |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
30 Text("What is the flag of") |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
31 .font(.title) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
32 .fontWeight(.semibold) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
33 .foregroundColor(.white) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
34 |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
35 Text("\(game.correctAnswer.key)?") |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
36 .font(.largeTitle.bold()) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
37 .foregroundColor(.white) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
38 |
0 | 39 } |
40 | |
41 Spacer() | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
42 VStack(spacing: 30) { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
43 ForEach(Array(game.userChoices.keys), id: \.self) { countryName in |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
44 Button { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
45 game.answer((key: countryName, value: game.data[countryName]!)) { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
46 game.selector() |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
47 } |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
48 } label: { |
20 | 49 Circle() |
50 .stroke(.white, lineWidth: 6) | |
51 .frame(height: geo.size.height * 0.15) | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
52 .shadow(radius: 10) |
20 | 53 .overlay( |
21 | 54 Image(game.data[countryName]!.flag) |
55 .renderingMode(.original) | |
56 .resizable() | |
57 .scaledToFill() | |
20 | 58 .clipShape(Circle()) |
59 ) | |
8 | 60 } |
0 | 61 } |
62 } | |
63 | |
64 Spacer() | |
65 } | |
66 .padding() | |
67 } | |
68 } | |
69 .navigationBarHidden(true) | |
15
f1967f8cc67b
first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents:
11
diff
changeset
|
70 .modifier(GameAlertsModifier(game: game, gameType: .guessTheFlag, moc: moc)) |
0 | 71 } |
72 } | |
73 | |
74 struct GuessTheFlagView_Previews: PreviewProvider { | |
75 static var previews: some View { | |
7 | 76 GuessTheFlagView() |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
77 .previewDevice(PreviewDevice(rawValue: "iPhone 14 Pro Max")) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
78 .previewDisplayName("iPhone 14 Pro Max") |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
79 |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
80 GuessTheFlagView() |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
81 .previewDevice(PreviewDevice(rawValue: "iPad Pro (12.9-inch) (5th generation)")) |
23 | 82 .previewDisplayName("iPad Pro (12.9-inch)") |
83 | |
84 GuessTheFlagView() | |
85 .previewDevice(PreviewDevice(rawValue: "iPhone 8")) | |
86 .previewDisplayName("iPhone 8") | |
0 | 87 } |
88 } |