From 14a7a5b56711ac42ba6fe3735468a9ad83d54674 Mon Sep 17 00:00:00 2001 From: swg99 <87419041+swg99@users.noreply.github.com> Date: Tue, 10 Aug 2021 13:58:41 +0100 Subject: [PATCH 1/3] Built a CharacterCard Instead of using the term "tiles" now using "cards" --- .../Rick And Morty.xcodeproj/project.pbxproj | 14 ++- .../morty-image.imageset/2.jpeg | Bin 0 -> 26212 bytes .../morty-image.imageset/Contents.json | 21 ++++ .../Rick And Morty/Views/CharacterCard.swift | 92 ++++++++++++++++++ .../{ => Views}/CharacterListView.swift | 0 5 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 Rick-and-Morty/Rick And Morty/Assets.xcassets/morty-image.imageset/2.jpeg create mode 100644 Rick-and-Morty/Rick And Morty/Assets.xcassets/morty-image.imageset/Contents.json create mode 100644 Rick-and-Morty/Rick And Morty/Views/CharacterCard.swift rename Rick-and-Morty/Rick And Morty/{ => Views}/CharacterListView.swift (100%) diff --git a/Rick-and-Morty/Rick And Morty.xcodeproj/project.pbxproj b/Rick-and-Morty/Rick And Morty.xcodeproj/project.pbxproj index f29a36f..89812e5 100644 --- a/Rick-and-Morty/Rick And Morty.xcodeproj/project.pbxproj +++ b/Rick-and-Morty/Rick And Morty.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ 1711B39E26B1898100BE935B /* CharacterListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1711B39D26B1898100BE935B /* CharacterListView.swift */; }; 17588BAC26C1750B008ECC31 /* Character.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17588BAB26C1750B008ECC31 /* Character.swift */; }; + 17588BAF26C273BB008ECC31 /* CharacterCard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17588BAE26C273BB008ECC31 /* CharacterCard.swift */; }; B811686D1CFF1C9900301A0A /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B811686C1CFF1C9900301A0A /* AppDelegate.swift */; }; B81168761CFF1C9900301A0A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B81168751CFF1C9900301A0A /* Assets.xcassets */; }; B81168791CFF1C9900301A0A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B81168771CFF1C9900301A0A /* LaunchScreen.storyboard */; }; @@ -28,6 +29,7 @@ /* Begin PBXFileReference section */ 1711B39D26B1898100BE935B /* CharacterListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CharacterListView.swift; sourceTree = ""; }; 17588BAB26C1750B008ECC31 /* Character.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Character.swift; sourceTree = ""; }; + 17588BAE26C273BB008ECC31 /* CharacterCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CharacterCard.swift; sourceTree = ""; }; B81168691CFF1C9900301A0A /* Rick And Morty.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Rick And Morty.app"; sourceTree = BUILT_PRODUCTS_DIR; }; B811686C1CFF1C9900301A0A /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; B81168751CFF1C9900301A0A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; @@ -64,6 +66,15 @@ path = Model; sourceTree = ""; }; + 17588BAD26C273A2008ECC31 /* Views */ = { + isa = PBXGroup; + children = ( + 1711B39D26B1898100BE935B /* CharacterListView.swift */, + 17588BAE26C273BB008ECC31 /* CharacterCard.swift */, + ); + path = Views; + sourceTree = ""; + }; B81168601CFF1C9900301A0A = { isa = PBXGroup; children = ( @@ -85,9 +96,9 @@ B811686B1CFF1C9900301A0A /* Rick And Morty */ = { isa = PBXGroup; children = ( + 17588BAD26C273A2008ECC31 /* Views */, 17588BAA26C174FB008ECC31 /* Model */, B811686C1CFF1C9900301A0A /* AppDelegate.swift */, - 1711B39D26B1898100BE935B /* CharacterListView.swift */, B81168751CFF1C9900301A0A /* Assets.xcassets */, B81168771CFF1C9900301A0A /* LaunchScreen.storyboard */, B811687A1CFF1C9900301A0A /* Info.plist */, @@ -208,6 +219,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 17588BAF26C273BB008ECC31 /* CharacterCard.swift in Sources */, 17588BAC26C1750B008ECC31 /* Character.swift in Sources */, 1711B39E26B1898100BE935B /* CharacterListView.swift in Sources */, B811686D1CFF1C9900301A0A /* AppDelegate.swift in Sources */, diff --git a/Rick-and-Morty/Rick And Morty/Assets.xcassets/morty-image.imageset/2.jpeg b/Rick-and-Morty/Rick And Morty/Assets.xcassets/morty-image.imageset/2.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..3863908c915baac6de6b7c9ebec2edbde468f56f GIT binary patch literal 26212 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 Date: Wed, 11 Aug 2021 11:11:33 +0100 Subject: [PATCH 2/3] Refactored CharacterCard --- .../Rick And Morty/Views/CharacterCard.swift | 54 ++++++++++--------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/Rick-and-Morty/Rick And Morty/Views/CharacterCard.swift b/Rick-and-Morty/Rick And Morty/Views/CharacterCard.swift index 9799023..19c3336 100644 --- a/Rick-and-Morty/Rick And Morty/Views/CharacterCard.swift +++ b/Rick-and-Morty/Rick And Morty/Views/CharacterCard.swift @@ -19,12 +19,19 @@ struct CharacterCardState { var firstEpisode: String } +private struct Constants { + let cornerRadius: CGFloat = 10 + let noSpacing: CGFloat = 0 + let VSpacing: CGFloat = 10 + let borderWidth: CGFloat = 0.25 + let cardHeight: CGFloat = 200 + let lastLocationCaption = "Last known location:" + let firstEpisodeCaption = "First seen in:" +} + struct CharacterCard: View { var characterCardState: CharacterCardState - - private let cornerRadius: CGFloat = 10 - private let noSpacing: CGFloat = 0 - private let VSpacing: CGFloat = 10 + private let constants: Constants = Constants() var body: some View { HStack(alignment: .top) { @@ -32,8 +39,8 @@ struct CharacterCard: View { .resizable() .aspectRatio(contentMode: .fit) - VStack(alignment: .leading, spacing: VSpacing) { - VStack(alignment: .leading, spacing: noSpacing) { + VStack(alignment: .leading, spacing: constants.VSpacing) { + VStack(alignment: .leading, spacing: constants.noSpacing) { Text(characterCardState.name) .font(.title) .fontWeight(.black) @@ -45,29 +52,28 @@ struct CharacterCard: View { } } - VStack(alignment: .leading, spacing: noSpacing) { - Text("Last known location:") - .font(.caption) - .foregroundColor(.secondary) - Text(characterCardState.lastLocation) - } + characterDetailsVStack(caption: constants.lastLocationCaption, text: characterCardState.lastLocation) - VStack(alignment: .leading, spacing: noSpacing) { - Text("First seen in:") - .font(.caption) - .foregroundColor(.secondary) - Text(characterCardState.firstEpisode) - } + characterDetailsVStack(caption: constants.lastLocationCaption, text: characterCardState.firstEpisode) } Spacer() } - .cornerRadius(cornerRadius) + .cornerRadius(constants.cornerRadius) .overlay( - RoundedRectangle(cornerRadius: cornerRadius) - .stroke(Color(.lightGray), lineWidth: 0.25) + RoundedRectangle(cornerRadius: constants.cornerRadius) + .stroke(Color(.lightGray), lineWidth: constants.borderWidth) ) .padding() - .frame(height: 200) + .frame(height: constants.cardHeight) + } + + func characterDetailsVStack(caption: String, text: String) -> some View { + return VStack(alignment: .leading, spacing: constants.noSpacing) { + Text(caption) + .font(.caption) + .foregroundColor(.secondary) + Text(text) + } } } @@ -76,14 +82,10 @@ struct CharacterTileView_Previews: PreviewProvider { Group { VStack { CharacterCard(characterCardState: CharacterCardState(id: 2, name: "Morty", image: UIImage(named: "morty-image")!, isAlive: true, species: "Human", lastLocation: "Earth", firstEpisode: "Episode 1")) - CharacterCard(characterCardState: CharacterCardState(id: 2, name: "Morty", image: UIImage(named: "morty-image")!, isAlive: false, species: "Human", lastLocation: "Earth", firstEpisode: "Episode 1")) - CharacterCard(characterCardState: CharacterCardState(id: 2, name: "Morty", image: UIImage(named: "morty-image")!, isAlive: true, species: "Human", lastLocation: "Earth", firstEpisode: "Episode 1")) } .preferredColorScheme(.light) VStack { CharacterCard(characterCardState: CharacterCardState(id: 2, name: "Morty", image: UIImage(named: "morty-image")!, isAlive: true, species: "Human", lastLocation: "Earth", firstEpisode: "Episode 1")) - CharacterCard(characterCardState: CharacterCardState(id: 2, name: "Morty", image: UIImage(named: "morty-image")!, isAlive: false, species: "Human", lastLocation: "Earth", firstEpisode: "Episode 1")) - CharacterCard(characterCardState: CharacterCardState(id: 2, name: "Morty", image: UIImage(named: "morty-image")!, isAlive: true, species: "Human", lastLocation: "Earth", firstEpisode: "Episode 1")) } .preferredColorScheme(.dark) From 06b88f9069d03c36f04cb0830ca3260da83811c4 Mon Sep 17 00:00:00 2001 From: swg99 <87419041+swg99@users.noreply.github.com> Date: Wed, 11 Aug 2021 11:13:14 +0100 Subject: [PATCH 3/3] Fixed captions --- Rick-and-Morty/Rick And Morty/Views/CharacterCard.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rick-and-Morty/Rick And Morty/Views/CharacterCard.swift b/Rick-and-Morty/Rick And Morty/Views/CharacterCard.swift index 19c3336..47384f3 100644 --- a/Rick-and-Morty/Rick And Morty/Views/CharacterCard.swift +++ b/Rick-and-Morty/Rick And Morty/Views/CharacterCard.swift @@ -54,7 +54,7 @@ struct CharacterCard: View { characterDetailsVStack(caption: constants.lastLocationCaption, text: characterCardState.lastLocation) - characterDetailsVStack(caption: constants.lastLocationCaption, text: characterCardState.firstEpisode) + characterDetailsVStack(caption: constants.firstEpisodeCaption, text: characterCardState.firstEpisode) } Spacer() }