diff --git a/LeeSeminSU/LeeSeminSU.xcodeproj/project.pbxproj b/LeeSeminSU/LeeSeminSU.xcodeproj/project.pbxproj index 88565ed..b4644ec 100644 --- a/LeeSeminSU/LeeSeminSU.xcodeproj/project.pbxproj +++ b/LeeSeminSU/LeeSeminSU.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 766C3A772D04C34600E2B952 /* Charge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 766C3A762D04C34600E2B952 /* Charge.swift */; }; 769FAB262CE1157A00785E3D /* SpacerPaddingExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 769FAB252CE1157A00785E3D /* SpacerPaddingExample.swift */; }; 769FAB292CE115B700785E3D /* ModifierExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 769FAB282CE115B700785E3D /* ModifierExample.swift */; }; 76BD46112CE103AB00E215FE /* VStackHStackExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76BD46102CE103AB00E215FE /* VStackHStackExample.swift */; }; @@ -26,9 +27,11 @@ 76FC2B872D00C4A100F10EE1 /* SecondNavigationViewExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76FC2B862D00C4A100F10EE1 /* SecondNavigationViewExample.swift */; }; 76FC2B8A2D00CA4200F10EE1 /* TabViewExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76FC2B892D00CA4200F10EE1 /* TabViewExample.swift */; }; 76FC2B8D2D00CC6600F10EE1 /* SheetModifierExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76FC2B8C2D00CC6600F10EE1 /* SheetModifierExample.swift */; }; + 76FC2B902D00D40D00F10EE1 /* Main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76FC2B8F2D00D40D00F10EE1 /* Main.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 766C3A762D04C34600E2B952 /* Charge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Charge.swift; sourceTree = ""; }; 769FAB252CE1157A00785E3D /* SpacerPaddingExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpacerPaddingExample.swift; sourceTree = ""; }; 769FAB282CE115B700785E3D /* ModifierExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModifierExample.swift; sourceTree = ""; }; 76BD46102CE103AB00E215FE /* VStackHStackExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VStackHStackExample.swift; sourceTree = ""; }; @@ -49,6 +52,7 @@ 76FC2B862D00C4A100F10EE1 /* SecondNavigationViewExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecondNavigationViewExample.swift; sourceTree = ""; }; 76FC2B892D00CA4200F10EE1 /* TabViewExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabViewExample.swift; sourceTree = ""; }; 76FC2B8C2D00CC6600F10EE1 /* SheetModifierExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SheetModifierExample.swift; sourceTree = ""; }; + 76FC2B8F2D00D40D00F10EE1 /* Main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Main.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -105,6 +109,7 @@ 76DFF92E2CD7B4F100C373C3 /* LeeSeminSU */ = { isa = PBXGroup; children = ( + 76FC2B8E2D00D3D400F10EE1 /* Week5 - TravelWallet */, 76FC2B742D00B37D00F10EE1 /* Week4 */, 76FC2B6F2D00AB7E00F10EE1 /* Week3 */, 76FC2DD82CE06C37000B329B /* Week2 */, @@ -180,6 +185,15 @@ path = SheetModifier; sourceTree = ""; }; + 76FC2B8E2D00D3D400F10EE1 /* Week5 - TravelWallet */ = { + isa = PBXGroup; + children = ( + 76FC2B8F2D00D40D00F10EE1 /* Main.swift */, + 766C3A762D04C34600E2B952 /* Charge.swift */, + ); + path = "Week5 - TravelWallet"; + sourceTree = ""; + }; 76FC2DD82CE06C37000B329B /* Week2 */ = { isa = PBXGroup; children = ( @@ -270,11 +284,13 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 76FC2B902D00D40D00F10EE1 /* Main.swift in Sources */, 76FC2B852D00C49900F10EE1 /* FirstNavigationViewExample.swift in Sources */, 76FC2B762D00B3C000F10EE1 /* StateExample.swift in Sources */, 76FC2B732D00AC0000F10EE1 /* ScrollViewExample.swift in Sources */, 76DFF9322CD7B4F100C373C3 /* ContentView.swift in Sources */, 76FC2B7B2D00BA2800F10EE1 /* ObservedObjectExample.swift in Sources */, + 766C3A772D04C34600E2B952 /* Charge.swift in Sources */, 76FC2B792D00B7E300F10EE1 /* BindingExample.swift in Sources */, 76DFF9302CD7B4F100C373C3 /* LeeSeminSUApp.swift in Sources */, 769FAB262CE1157A00785E3D /* SpacerPaddingExample.swift in Sources */, diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week2/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week2/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week2/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/damgome.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week2/damgome.imageset/Contents.json similarity index 100% rename from LeeSeminSU/LeeSeminSU/Assets.xcassets/damgome.imageset/Contents.json rename to LeeSeminSU/LeeSeminSU/Assets.xcassets/Week2/damgome.imageset/Contents.json diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/damgome.imageset/damgome.png b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week2/damgome.imageset/damgome.png similarity index 100% rename from LeeSeminSU/LeeSeminSU/Assets.xcassets/damgome.imageset/damgome.png rename to LeeSeminSU/LeeSeminSU/Assets.xcassets/Week2/damgome.imageset/damgome.png diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/vdamgome.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week2/vdamgome.imageset/Contents.json similarity index 100% rename from LeeSeminSU/LeeSeminSU/Assets.xcassets/vdamgome.imageset/Contents.json rename to LeeSeminSU/LeeSeminSU/Assets.xcassets/Week2/vdamgome.imageset/Contents.json diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/vdamgome.imageset/vdamgome.png b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week2/vdamgome.imageset/vdamgome.png similarity index 100% rename from LeeSeminSU/LeeSeminSU/Assets.xcassets/vdamgome.imageset/vdamgome.png rename to LeeSeminSU/LeeSeminSU/Assets.xcassets/Week2/vdamgome.imageset/vdamgome.png diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/N.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/N.imageset/Contents.json new file mode 100644 index 0000000..9737ed6 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/N.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "N.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/N.imageset/N.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/N.imageset/N.svg new file mode 100644 index 0000000..3767bd6 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/N.imageset/N.svg @@ -0,0 +1,4 @@ + + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/exchange.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/exchange.imageset/Contents.json new file mode 100644 index 0000000..b7cfc19 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/exchange.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "exchange.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/exchange.imageset/exchange.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/exchange.imageset/exchange.svg new file mode 100644 index 0000000..913ac8b --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/exchange.imageset/exchange.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/remit.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/remit.imageset/Contents.json new file mode 100644 index 0000000..22a2227 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/remit.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "remit.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/remit.imageset/remit.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/remit.imageset/remit.svg new file mode 100644 index 0000000..043546f --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/CardItem/remit.imageset/remit.svg @@ -0,0 +1,4 @@ + + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/KOREA.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/KOREA.imageset/Contents.json new file mode 100644 index 0000000..5d0616b --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/KOREA.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "KOREA.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/KOREA.imageset/KOREA.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/KOREA.imageset/KOREA.svg new file mode 100644 index 0000000..14a9c68 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/KOREA.imageset/KOREA.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Nav/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Nav/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Nav/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Nav/notification.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Nav/notification.imageset/Contents.json new file mode 100644 index 0000000..5dabea1 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Nav/notification.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "notification.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Nav/notification.imageset/notification.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Nav/notification.imageset/notification.svg new file mode 100644 index 0000000..c01c33a --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Nav/notification.imageset/notification.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Nav/qr.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Nav/qr.imageset/Contents.json new file mode 100644 index 0000000..d5c2776 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Nav/qr.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "qr.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Nav/qr.imageset/qr.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Nav/qr.imageset/qr.svg new file mode 100644 index 0000000..5c9cc91 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/Nav/qr.imageset/qr.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/my.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/my.imageset/Contents.json new file mode 100644 index 0000000..9b575b9 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/my.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "my.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/my.imageset/my.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/my.imageset/my.svg new file mode 100644 index 0000000..d056e3a --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/my.imageset/my.svg @@ -0,0 +1,3 @@ + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/pay.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/pay.imageset/Contents.json new file mode 100644 index 0000000..4583f30 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/pay.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "pay.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/pay.imageset/pay.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/pay.imageset/pay.svg new file mode 100644 index 0000000..9ce828b --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/pay.imageset/pay.svg @@ -0,0 +1,4 @@ + + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/purchase.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/purchase.imageset/Contents.json new file mode 100644 index 0000000..95846cc --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/purchase.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "purchase.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/purchase.imageset/purchase.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/purchase.imageset/purchase.svg new file mode 100644 index 0000000..d08e9f8 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/purchase.imageset/purchase.svg @@ -0,0 +1,3 @@ + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/remitment.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/remitment.imageset/Contents.json new file mode 100644 index 0000000..f1b2b7e --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/remitment.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "remitment.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/remitment.imageset/remitment.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/remitment.imageset/remitment.svg new file mode 100644 index 0000000..40334fb --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/remitment.imageset/remitment.svg @@ -0,0 +1,3 @@ + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/travel.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/travel.imageset/Contents.json new file mode 100644 index 0000000..512a4c5 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/travel.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "travel.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/travel.imageset/travel.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/travel.imageset/travel.svg new file mode 100644 index 0000000..f08bd96 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/TabItem/travel.imageset/travel.svg @@ -0,0 +1,3 @@ + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/USA.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/USA.imageset/Contents.json new file mode 100644 index 0000000..2e390fd --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/USA.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "USA.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/USA.imageset/USA.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/USA.imageset/USA.svg new file mode 100644 index 0000000..bb72903 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/USA.imageset/USA.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/arrow.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/arrow.imageset/Contents.json new file mode 100644 index 0000000..ee30117 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/arrow.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "arrow.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/arrow.imageset/arrow.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/arrow.imageset/arrow.svg new file mode 100644 index 0000000..4e395d5 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/arrow.imageset/arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/info.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/info.imageset/Contents.json new file mode 100644 index 0000000..b5faab1 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/info.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "info.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/info.imageset/info.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/info.imageset/info.svg new file mode 100644 index 0000000..1c47cf4 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/info.imageset/info.svg @@ -0,0 +1,4 @@ + + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/kakaoBank.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/kakaoBank.imageset/Contents.json new file mode 100644 index 0000000..5cf8050 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/kakaoBank.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "kakaoBank.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/kakaoBank.imageset/kakaoBank.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/kakaoBank.imageset/kakaoBank.svg new file mode 100644 index 0000000..43cb593 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/kakaoBank.imageset/kakaoBank.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/platinumCard.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/platinumCard.imageset/Contents.json new file mode 100644 index 0000000..b279d5c --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/platinumCard.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "platinumCard.svg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/platinumCard.imageset/platinumCard.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/platinumCard.imageset/platinumCard.svg new file mode 100644 index 0000000..58f6048 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/platinumCard.imageset/platinumCard.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/xmark.imageset/Contents.json b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/xmark.imageset/Contents.json new file mode 100644 index 0000000..7a51730 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/xmark.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "xmark.svg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/xmark.imageset/xmark.svg b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/xmark.imageset/xmark.svg new file mode 100644 index 0000000..e3b7674 --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Assets.xcassets/Week5/xmark.imageset/xmark.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/LeeSeminSU/LeeSeminSU/ContentView.swift b/LeeSeminSU/LeeSeminSU/ContentView.swift index e117b05..3ee8e4a 100644 --- a/LeeSeminSU/LeeSeminSU/ContentView.swift +++ b/LeeSeminSU/LeeSeminSU/ContentView.swift @@ -25,7 +25,10 @@ struct ContentView: View { // BindingExample() // ObservedObjectExample() // FirstNavigationViewExample() - SheetModifierExample() +// SheetModifierExample() + +// Week5 - TravelWallet + Main() } } diff --git a/LeeSeminSU/LeeSeminSU/Week5 - TravelWallet/Charge.swift b/LeeSeminSU/LeeSeminSU/Week5 - TravelWallet/Charge.swift new file mode 100644 index 0000000..e2c7e7c --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Week5 - TravelWallet/Charge.swift @@ -0,0 +1,79 @@ +// +// Charge.swift +// LeeSeminSU +// +// Created by 이세민 on 12/8/24. +// + +import SwiftUI + +struct Charge: View { + @State private var usdMoney: String = "" + @State private var krwMoney: String = "0원" + + @Binding var chargedMoney: Int + + @Environment(\.presentationMode) var presentationMode + + var body: some View { + VStack(alignment: .leading) { + HStack { + Image("USA") + Text("미국 USD") + .font(.system(size: 15, weight: .semibold)) + } + .padding(.leading) + .padding(.bottom) + .padding(.top, 70) + + TextField("충전할 금액을 입력해주세요.", text: $usdMoney) + .keyboardType(.decimalPad) + .padding(.leading) + .padding(.bottom, 40) + .onChange(of: usdMoney) { newValue in + if let usd = Int(newValue) { + let krw = usd * 1400 + krwMoney = "\(Int(krw))원" + } else { + krwMoney = "0원" + } + } + + HStack { + Image("KOREA") + Text("대한한국 KRW") + .font(.system(size: 15, weight: .semibold)) + } + .padding(.leading) + .padding(.bottom) + + Text(krwMoney) + .font(.system(size: 18, weight: .semibold)) + .padding(.leading) + .padding(.bottom, 20) + + Text("1달러 = 1,400원") + .font(.system(size: 10)) + .padding(.leading) + .foregroundColor(Color(hex: "#757575")) + + Spacer() + + Button(action: { + if let usd = Int(usdMoney) { + chargedMoney += usd + } + + presentationMode.wrappedValue.dismiss() + }) { + Text("충전하기") + .font(.system(size: 18, weight: .bold)) + .foregroundColor(.white) + .frame(maxWidth: .infinity) + .frame(height: 81) + .background(Color(hex: "#0BAEFF")) + } + } + .navigationBarHidden(true) + } +} diff --git a/LeeSeminSU/LeeSeminSU/Week5 - TravelWallet/Main.swift b/LeeSeminSU/LeeSeminSU/Week5 - TravelWallet/Main.swift new file mode 100644 index 0000000..61e825f --- /dev/null +++ b/LeeSeminSU/LeeSeminSU/Week5 - TravelWallet/Main.swift @@ -0,0 +1,256 @@ +// +// Main.swift +// LeeSeminSU +// +// Created by 이세민 on 12/5/24. +// + +import SwiftUI + +struct Main: View { + @State private var isDollarBoxVisible = true + + @State private var chargedMoney: Int = 0 + + var body: some View { + TabView { + NavigationView { + VStack { + // 상단 네비게이션바 + HStack { + Text("홈") + .font(.title2) + .fontWeight(.bold) + .padding(.trailing, 10) + Text("소셜페이") + .font(.title2) + .fontWeight(.bold) + .foregroundColor(Color(red: 0.74, green: 0.74, blue: 0.74)) + + Spacer() + + Image("qr") + .resizable() + .scaledToFit() + .frame(width: 20, height: 20) + .padding(.trailing, 10) + Image("notification") + .resizable() + .scaledToFit() + .frame(width: 20, height: 20) + } + .padding() + + // 플래티늄 카드 + HStack { + Image("platinumCard") + VStack(alignment: .leading, spacing: 5){ + Text("드디어 나왔다!") + .font(.system(size: 13)) + .foregroundColor(Color(hex: "#616161")) + HStack(spacing: 0) { + Text("트래블월렛 ") + .font(.system(size: 16, weight: .bold)) + .foregroundColor(Color(hex: "#000000")) + Text("플래티늄") + .font(.system(size: 16, weight: .bold)) + .foregroundColor(Color(hex: "#0079FF")) + Text(" 카드") + .font(.system(size: 16, weight: .bold)) + .foregroundColor(Color(hex: "#000000")) + } + } + Spacer() + Image("arrow") + } + .padding() + .frame(width: 343, height: 76) + .background( + RoundedRectangle(cornerRadius: 15) + .fill( + LinearGradient( + gradient: Gradient(colors: [ + Color(hex: "6FE8B7"), + Color(hex: "35DAE3") + ]), + startPoint: .leading, + endPoint: .trailing + ) + ) + ) + .padding(.bottom) + + // 내 지갑 + HStack{ + VStack(spacing: 45) { + HStack { + Text("내 지갑") + .font(.system(size: 18, weight: .semibold)) + Image("info") + + Spacer() + + Text("이용내역") + .font(.system(size: 15, weight: .medium)) + Image("arrow") + .padding(.leading, -13) + } + .padding(.horizontal, 5) + + if chargedMoney == 0 { + Text("아직 충전된 외화가 없습니다.") + .font(.system(size: 13)) + .foregroundColor(Color(hex: "#616161")) + } + else { + HStack { + Image("USA") + Text("미국") + .font(.system(size: 15, weight: .semibold)) + + Spacer() + + Text("$\(chargedMoney)") + .font(.system(size: 15, weight: .medium)) + } + .padding(.horizontal, 5) + } + + NavigationLink(destination: Charge(chargedMoney: $chargedMoney)) { + Text("충전하기") + .font(.system(size: 15, weight: .bold)) + .foregroundColor(.white) + .frame(width: 302, height: 48) + .background(Color(hex: "#0BAEFF")) + .cornerRadius(12) + } + } + .padding() + .frame(width: 343, height: 228) + .background( + RoundedRectangle(cornerRadius: 15) + .fill(Color(hex: "#FFFFFF")) + ) + } + .padding(.bottom) + + // 달러박스 + if isDollarBoxVisible { + HStack { + HStack(spacing: 20) { + Image("kakaoBank") + + VStack(alignment: .leading, spacing: 5) { + Text("카카오뱅크 이용중이시라면") + .font(.system(size: 10)) + Text("달러박스를 연동해보세요!") + .font(.system(size: 13, weight: .bold)) + } + } + + Spacer() + + Button(action: { + isDollarBoxVisible = false + }) { + Image("xmark") + } + } + .padding() + .frame(width: 343, height: 66) + .background( + RoundedRectangle(cornerRadius: 15) + .fill(Color(hex: "#FFFFFF")) + ) + .padding(.bottom) + } + + // 수평 스크롤 카드 + ScrollView(.horizontal, showsIndicators: false) { + HStack(spacing: 8) { + CardView(icon: "N", subtitle: "결제부터", title: "N빵하기") + CardView(icon: "remit", subtitle: "친구에게", title: "송금하기") + CardView(icon: "exchange", subtitle: "외화간", title: "환전하기") + } + .padding(.horizontal, 25) + } + Spacer() + } + .background(Color(hex: "#F4F4F4")) + } + .navigationBarHidden(true) + + .tabItem { + Label("페이", image: "pay") + } + + Text("송금") + .tabItem { + Label("송금", image: "remitment") + } + .disabled(true) + + Text("직구") + .tabItem { + Label("직구", image: "purchase") + } + .disabled(true) + + Text("여행") + .tabItem { + Label("여행", image: "travel") + } + .disabled(true) + + Text("마이") + .tabItem { + Label("마이", image: "my") + } + .disabled(true) + } + .accentColor(Color(hex: "#0BAEFF")) + } +} + +@ViewBuilder +func CardView(icon: String, subtitle: String, title: String) -> some View { + VStack(alignment: .leading) { + Image(icon) + .padding(7) + + Spacer() + + Text(subtitle) + .font(.system(size: 15)) + .foregroundColor(Color(hex: "#616161")) + .padding(.leading, 7) + .padding(.bottom, 1) + Text(title) + .font(.system(size: 15, weight: .semibold)) + .padding(.leading, 7) + } + .padding() + .frame(width: 131, height: 131, alignment: .leading) + .background(Color(hex: "FFFFFF")) + .cornerRadius(15) +} + + +#Preview { + Main() +} + +extension Color { + init(hex: String) { + let scanner = Scanner(string: hex) + _ = scanner.scanString("#") + + var rgb: UInt64 = 0 + scanner.scanHexInt64(&rgb) + + let r = Double((rgb >> 16) & 0xFF) / 255.0 + let g = Double((rgb >> 8) & 0xFF) / 255.0 + let b = Double((rgb >> 0) & 0xFF) / 255.0 + self.init(red: r, green: g, blue: b) + } +}