annotate GeoQuiz/GuessTheFlagView-ViewModel.swift @ 27:3f4b366d476d

add flag layout settings
author Dennis C. M. <dennis@denniscm.com>
date Thu, 10 Nov 2022 09:26:48 +0100
parents
children 9d6dd0e59c22
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 //
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
2 // GuessTheFlagView-ViewModel.swift
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
3 // GeoQuiz
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
4 //
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 9/11/22.
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 //
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8 import Foundation
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
9 import SwiftUI
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
11 extension GuessTheFlagView {
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
12
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
13 class Layout {
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
14
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
15 static func showFlag(in flagPath: String, geo: GeometryProxy, _ userController: UserController) -> some View {
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
16 switch userController.data.guessTheFlagShape {
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
17 case .respectAspectRatio:
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
18 return AnyView(
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
19 RoundedRectangle(cornerRadius: 20)
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
20 .foregroundColor(.white.opacity(0.5))
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
21 .frame(width: geo.size.height * 0.3, height: geo.size.height * 0.15)
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
22 .overlay(
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
23 Image(uiImage: UIImage(contentsOfFile: flagPath)!)
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
24 .resizable()
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
25 .scaledToFit()
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
26 .cornerRadius(20)
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
27 .shadow(radius: 10)
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
28 .padding()
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
29 )
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
30 )
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
31 case .circular:
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
32 return AnyView(
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
33 Image(uiImage: UIImage(contentsOfFile: flagPath)!)
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
34 .renderingMode(.original)
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
35 .resizable()
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
36 .scaledToFit()
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
37 .frame(height: geo.size.height * 0.16)
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
38 .clipShape(Circle())
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
39 .shadow(radius: 10)
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
40 )
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
41 case .rectangular:
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
42 return AnyView(
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
43 Image(uiImage: UIImage(contentsOfFile: flagPath)!)
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
44 .renderingMode(.original)
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
45 .resizable()
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
46 .scaledToFill()
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
47 .frame(width: geo.size.height * 0.3, height: geo.size.height * 0.15)
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
48 .clipShape(RoundedRectangle(cornerRadius: 20))
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
49 .shadow(radius: 10)
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
50 )
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
51 }
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
52 }
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
53 }
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
54 }