From 444baedfbdc8b09ee2afc2ff758f29dc36a01017 Mon Sep 17 00:00:00 2001 From: rudolfoss Date: Tue, 14 Feb 2023 23:26:56 +0900 Subject: [PATCH] feat: final --- "Icon\r" | 0 LGHTSG/LGHTSG.xcodeproj/project.pbxproj | 37 +- .../xcshareddata/swiftpm/Package.resolved | 9 + LGHTSG/LGHTSG/App/AppDelegate.swift | 8 + LGHTSG/LGHTSG/App/SceneDelegate.swift | 49 ++- .../AppIcon.appiconset/100.png | Bin 0 -> 2250 bytes .../AppIcon.appiconset/102.png | Bin 0 -> 2237 bytes .../AppIcon.appiconset/1024.png | Bin 0 -> 35604 bytes .../AppIcon.appiconset/114.png | Bin 0 -> 2452 bytes .../AppIcon.appiconset/120.png | Bin 0 -> 2621 bytes .../AppIcon.appiconset/128.png | Bin 0 -> 2724 bytes .../AppIcon.appiconset/144.png | Bin 0 -> 3088 bytes .../AppIcon.appiconset/152.png | Bin 0 -> 3183 bytes .../Assets.xcassets/AppIcon.appiconset/16.png | Bin 0 -> 382 bytes .../AppIcon.appiconset/167.png | Bin 0 -> 3554 bytes .../AppIcon.appiconset/172.png | Bin 0 -> 3713 bytes .../AppIcon.appiconset/180.png | Bin 0 -> 3719 bytes .../AppIcon.appiconset/196.png | Bin 0 -> 4350 bytes .../Assets.xcassets/AppIcon.appiconset/20.png | Bin 0 -> 465 bytes .../AppIcon.appiconset/216.png | Bin 0 -> 4668 bytes .../AppIcon.appiconset/256.png | Bin 0 -> 5526 bytes .../Assets.xcassets/AppIcon.appiconset/29.png | Bin 0 -> 684 bytes .../Assets.xcassets/AppIcon.appiconset/32.png | Bin 0 -> 732 bytes .../Assets.xcassets/AppIcon.appiconset/40.png | Bin 0 -> 894 bytes .../Assets.xcassets/AppIcon.appiconset/48.png | Bin 0 -> 1075 bytes .../Assets.xcassets/AppIcon.appiconset/50.png | Bin 0 -> 1177 bytes .../AppIcon.appiconset/512.png | Bin 0 -> 13146 bytes .../Assets.xcassets/AppIcon.appiconset/55.png | Bin 0 -> 1299 bytes .../Assets.xcassets/AppIcon.appiconset/57.png | Bin 0 -> 1324 bytes .../Assets.xcassets/AppIcon.appiconset/58.png | Bin 0 -> 1236 bytes .../Assets.xcassets/AppIcon.appiconset/60.png | Bin 0 -> 1328 bytes .../Assets.xcassets/AppIcon.appiconset/64.png | Bin 0 -> 1426 bytes .../Assets.xcassets/AppIcon.appiconset/66.png | Bin 0 -> 1517 bytes .../Assets.xcassets/AppIcon.appiconset/72.png | Bin 0 -> 1649 bytes .../Assets.xcassets/AppIcon.appiconset/76.png | Bin 0 -> 1782 bytes .../Assets.xcassets/AppIcon.appiconset/80.png | Bin 0 -> 1884 bytes .../Assets.xcassets/AppIcon.appiconset/87.png | Bin 0 -> 1858 bytes .../Assets.xcassets/AppIcon.appiconset/88.png | Bin 0 -> 1920 bytes .../Assets.xcassets/AppIcon.appiconset/92.png | Bin 0 -> 2061 bytes .../AppIcon.appiconset/Contents.json | 345 +++++++++++++++++- .../box/tap-image.imageset/Contents.json | 23 ++ .../tap-image.imageset/Rectangle 172 (12).png | Bin 0 -> 947 bytes .../tap-image.imageset/Rectangle 172 (13).png | Bin 0 -> 545 bytes .../tap-image.imageset/Rectangle 172 (14).png | Bin 0 -> 269 bytes .../profile-money-mini.imageset/Contents.json | 23 ++ .../Ellipse 10 (1).png | Bin 0 -> 1691 bytes .../Ellipse 10 (2).png | Bin 0 -> 2728 bytes .../Ellipse 10.png | Bin 0 -> 748 bytes .../profile-money.imageset/Contents.json | 23 ++ .../profile-money.imageset/Ellipse 10 (3).png | Bin 0 -> 3425 bytes .../profile-money.imageset/Ellipse 10 (4).png | Bin 0 -> 8159 bytes .../profile-money.imageset/Ellipse 10 (5).png | Bin 0 -> 13911 bytes .../1-removebg-preview 2 (2) 1 (3).png | Bin 0 -> 30669 bytes .../1-removebg-preview 2 (2) 1 (4).png | Bin 0 -> 55179 bytes .../1-removebg-preview 2 (2) 1 (5).png | Bin 0 -> 71679 bytes .../lghtsg-hg.imageset/Contents.json | 23 ++ .../lghtsg.imageset/Contents.json | 23 ++ .../lghtsg.imageset/appstore 1.png | Bin 0 -> 35604 bytes .../lghtsg.imageset/appstore 2.png | Bin 0 -> 35604 bytes .../lghtsg.imageset/appstore.png | Bin 0 -> 35604 bytes .../1-removebg-preview 2 (1).png | Bin 0 -> 11273 bytes .../1-removebg-preview 2 (2).png | Bin 0 -> 18177 bytes .../1-removebg-preview 2.png | Bin 0 -> 4240 bytes .../new-logo.imageset/Contents.json | 23 ++ .../rank.imageset/Contents.json | 23 ++ .../rank.imageset/Group 144 (10).png | Bin 0 -> 3953 bytes .../rank.imageset/Group 144 (11).png | Bin 0 -> 8431 bytes .../rank.imageset/Group 144 (12).png | Bin 0 -> 13634 bytes .../rank2.imageset/Contents.json | 23 ++ .../rank2.imageset/Group 144 (4).png | Bin 0 -> 4064 bytes .../rank2.imageset/Group 144 (5).png | Bin 0 -> 8639 bytes .../rank2.imageset/Group 144 (6).png | Bin 0 -> 13779 bytes .../rank3.imageset/Contents.json | 23 ++ .../rank3.imageset/Group 144 (7).png | Bin 0 -> 3946 bytes .../rank3.imageset/Group 144 (8).png | Bin 0 -> 8339 bytes .../rank3.imageset/Group 144 (9).png | Bin 0 -> 13668 bytes .../save-btn.imageset/Contents.json | 6 +- .../\355\225\230\353\213\250 Btn (1) 1.png" | Bin .../\355\225\230\353\213\250 Btn (2) 1.png" | Bin .../FindPasswordController.swift | 54 ++- .../Authentication/LoginController.swift | 65 ++-- .../RegisterationController.swift | 91 ++++- .../RegisterationSuccessController.swift | 23 +- .../CheckAgreeController.swift | 14 +- .../CheckPageMarketingController.swift | 1 + .../CheckPagePrivacyController.swift | 1 + .../CheckPageServiceController.swift | 1 + .../EstateChartViewController.swift | 177 +++++---- .../Controller/ExploreViewController.swift | 127 +++++-- .../Controller/HomeViewController.swift | 104 ++++-- .../LGHTSG/Controller/MainTabController.swift | 21 +- .../AccountSettingViewController.swift | 81 ++-- .../New Group/MyPageViewController.swift | 23 +- .../Controller/RankViewController.swift | 176 +++++++++ .../ReSellChartViewController.swift | 182 +++++---- .../Controller/StockChartViewController.swift | 163 +++++---- LGHTSG/LGHTSG/LaunchScreen.storyboard | 37 +- LGHTSG/LGHTSG/View/ChartMarker.swift | 10 +- LGHTSG/LGHTSG/View/EstateDetailCell.swift | 9 +- LGHTSG/LGHTSG/View/EstateSaleCell.swift | 5 +- .../View/ExploreVC/EstateController.swift | 155 ++++++-- LGHTSG/LGHTSG/View/ExploreVC/StockView.swift | 4 +- .../View/ExploreVC/TopViewController.swift | 20 +- .../ExploreVC/TopViewDetailController.swift | 20 +- LGHTSG/LGHTSG/View/ExploreVC/resellView.swift | 19 +- LGHTSG/LGHTSG/View/FindPwView.swift | 5 +- LGHTSG/LGHTSG/View/HomeVC/HomeTableCell.swift | 52 ++- .../View/HomeVC/StockDateSegmentControl.swift | 9 +- .../HomeVC/UnderlineSegmentedControl.swift | 9 +- .../View/JoinVC/CheckVc/CheckAgreeView.swift | 8 +- .../CheckVc/CheckPageMarketingView.swift | 4 +- .../JoinVC/CheckVc/CheckPagePrivacyView.swift | 54 ++- .../JoinVC/CheckVc/CheckPageServiceView.swift | 4 +- LGHTSG/LGHTSG/View/JoinVC/RegisterView.swift | 4 +- LGHTSG/LGHTSG/View/LoginView.swift | 33 +- LGHTSG/LGHTSG/View/MyPageView.swift | 4 +- LGHTSG/LGHTSG/View/RankViewCell.swift | 100 +++++ LGHTSG/LGHTSG/View/StartView.swift | 6 +- LGHTSG/LGHTSG/View/TopViewCell.swift | 12 +- LGHTSG/LGHTSG/ViewController.swift | 2 +- LGHTSG/LGHTSG/ViewModel/AssetModel.swift | 2 +- .../LGHTSG/ViewModel/EstatePriceModel.swift | 4 +- LGHTSG/LGHTSG/ViewModel/RankingModel.swift | 23 ++ .../ViewModel/loginVM/LoginApiModel.swift | 1 - 124 files changed, 2065 insertions(+), 515 deletions(-) create mode 100644 "Icon\r" create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/100.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/102.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/1024.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/114.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/120.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/128.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/144.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/152.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/16.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/167.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/172.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/180.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/196.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/20.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/216.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/256.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/29.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/32.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/40.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/48.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/50.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/512.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/55.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/57.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/58.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/60.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/64.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/66.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/72.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/76.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/80.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/87.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/88.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/92.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/box/tap-image.imageset/Contents.json create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/box/tap-image.imageset/Rectangle 172 (12).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/box/tap-image.imageset/Rectangle 172 (13).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/box/tap-image.imageset/Rectangle 172 (14).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/iconImage/profile-money-mini.imageset/Contents.json create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/iconImage/profile-money-mini.imageset/Ellipse 10 (1).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/iconImage/profile-money-mini.imageset/Ellipse 10 (2).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/iconImage/profile-money-mini.imageset/Ellipse 10.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/iconImage/profile-money.imageset/Contents.json create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/iconImage/profile-money.imageset/Ellipse 10 (3).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/iconImage/profile-money.imageset/Ellipse 10 (4).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/iconImage/profile-money.imageset/Ellipse 10 (5).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/lghtsg-hg.imageset/1-removebg-preview 2 (2) 1 (3).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/lghtsg-hg.imageset/1-removebg-preview 2 (2) 1 (4).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/lghtsg-hg.imageset/1-removebg-preview 2 (2) 1 (5).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/lghtsg-hg.imageset/Contents.json create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/lghtsg.imageset/Contents.json create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/lghtsg.imageset/appstore 1.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/lghtsg.imageset/appstore 2.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/lghtsg.imageset/appstore.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/new-logo.imageset/1-removebg-preview 2 (1).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/new-logo.imageset/1-removebg-preview 2 (2).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/new-logo.imageset/1-removebg-preview 2.png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/new-logo.imageset/Contents.json create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/rank.imageset/Contents.json create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/rank.imageset/Group 144 (10).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/rank.imageset/Group 144 (11).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/rank.imageset/Group 144 (12).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/rank2.imageset/Contents.json create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/rank2.imageset/Group 144 (4).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/rank2.imageset/Group 144 (5).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/rank2.imageset/Group 144 (6).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/rank3.imageset/Contents.json create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/rank3.imageset/Group 144 (7).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/rank3.imageset/Group 144 (8).png create mode 100644 LGHTSG/LGHTSG/Assets.xcassets/rank3.imageset/Group 144 (9).png rename "LGHTSG/LGHTSG/Assets.xcassets/save-btn.imageset/\355\225\230\353\213\250 Btn (1).png" => "LGHTSG/LGHTSG/Assets.xcassets/save-btn.imageset/\355\225\230\353\213\250 Btn (1) 1.png" (100%) rename "LGHTSG/LGHTSG/Assets.xcassets/save-btn.imageset/\355\225\230\353\213\250 Btn (2).png" => "LGHTSG/LGHTSG/Assets.xcassets/save-btn.imageset/\355\225\230\353\213\250 Btn (2) 1.png" (100%) create mode 100644 LGHTSG/LGHTSG/Controller/RankViewController.swift create mode 100644 LGHTSG/LGHTSG/View/RankViewCell.swift create mode 100644 LGHTSG/LGHTSG/ViewModel/RankingModel.swift diff --git "a/Icon\r" "b/Icon\r" new file mode 100644 index 0000000..e69de29 diff --git a/LGHTSG/LGHTSG.xcodeproj/project.pbxproj b/LGHTSG/LGHTSG.xcodeproj/project.pbxproj index 768cb2f..2825c0c 100644 --- a/LGHTSG/LGHTSG.xcodeproj/project.pbxproj +++ b/LGHTSG/LGHTSG.xcodeproj/project.pbxproj @@ -67,6 +67,10 @@ F0F6B166299139D900F8835D /* AccountSettingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0F6B164299139D900F8835D /* AccountSettingViewController.swift */; }; F0F6B167299139D900F8835D /* MyPageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0F6B165299139D900F8835D /* MyPageViewController.swift */; }; F0F6B16A29913ADB00F8835D /* UserApiModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0F6B16929913ADB00F8835D /* UserApiModel.swift */; }; + F51C6FF529991E8800048DEE /* RankViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F51C6FF429991E8800048DEE /* RankViewController.swift */; }; + F51C6FF729991EA600048DEE /* RankViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F51C6FF629991EA600048DEE /* RankViewCell.swift */; }; + F51C6FF92999207000048DEE /* RankingModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F51C6FF82999207000048DEE /* RankingModel.swift */; }; + F51C6FFC299A55A300048DEE /* MarqueeLabel in Frameworks */ = {isa = PBXBuildFile; productRef = F51C6FFB299A55A300048DEE /* MarqueeLabel */; }; F5DAEC00298AD1FA0098A11A /* login.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5DAEBFF298AD1FA0098A11A /* login.swift */; }; F5DAEC02298AD2050098A11A /* email.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5DAEC01298AD2050098A11A /* email.swift */; }; F5DAEC04298AD20E0098A11A /* join.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5DAEC03298AD20E0098A11A /* join.swift */; }; @@ -159,6 +163,9 @@ F0F6B164299139D900F8835D /* AccountSettingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountSettingViewController.swift; sourceTree = ""; }; F0F6B165299139D900F8835D /* MyPageViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MyPageViewController.swift; sourceTree = ""; }; F0F6B16929913ADB00F8835D /* UserApiModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserApiModel.swift; sourceTree = ""; }; + F51C6FF429991E8800048DEE /* RankViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RankViewController.swift; sourceTree = ""; }; + F51C6FF629991EA600048DEE /* RankViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RankViewCell.swift; sourceTree = ""; }; + F51C6FF82999207000048DEE /* RankingModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RankingModel.swift; sourceTree = ""; }; F5DAEBFF298AD1FA0098A11A /* login.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = login.swift; sourceTree = ""; }; F5DAEC01298AD2050098A11A /* email.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = email.swift; sourceTree = ""; }; F5DAEC03298AD20E0098A11A /* join.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = join.swift; sourceTree = ""; }; @@ -193,6 +200,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + F51C6FFC299A55A300048DEE /* MarqueeLabel in Frameworks */, 07120DF3296EDF6E00ABF98F /* Alamofire in Frameworks */, 07120DF6296EDF7A00ABF98F /* SnapKit in Frameworks */, 8E910354CAD5238FB38C267D /* Pods_LGHTSG.framework in Frameworks */, @@ -285,6 +293,7 @@ F0F6B15D2991310000F8835D /* UserRoeModel.swift */, 078401C1298A486300CDE061 /* EstatePriceModel.swift */, 07F0D8872993D6D300D3C186 /* TopViewModel.swift */, + F51C6FF82999207000048DEE /* RankingModel.swift */, ); path = ViewModel; sourceTree = ""; @@ -305,6 +314,7 @@ 078401CA298A49D500CDE061 /* EstateDetailCell.swift */, 075BBA39298ACF1D00710F44 /* EstateSaleCell.swift */, 0764F26A298642EF00F446CB /* SearchItemCell.swift */, + F51C6FF629991EA600048DEE /* RankViewCell.swift */, 0764F284298959C600F446CB /* TopViewCell.swift */, F5DAEC1B298AD2F70098A11A /* LoginView.swift */, 078401D0298A49E200CDE061 /* ChartMarker.swift */, @@ -337,6 +347,7 @@ 078401B3298A484800CDE061 /* HomeViewController.swift */, 078401AE298A484800CDE061 /* MainTabController.swift */, 078401B0298A484800CDE061 /* StockChartViewController.swift */, + F51C6FF429991E8800048DEE /* RankViewController.swift */, ); path = Controller; sourceTree = ""; @@ -486,6 +497,7 @@ packageProductDependencies = ( 07120DF2296EDF6E00ABF98F /* Alamofire */, 07120DF5296EDF7A00ABF98F /* SnapKit */, + F51C6FFB299A55A300048DEE /* MarqueeLabel */, ); productName = LGHTSG; productReference = 071E053D296BB7B50020282F /* LGHTSG.app */; @@ -518,6 +530,7 @@ packageReferences = ( 07120DF1296EDF6E00ABF98F /* XCRemoteSwiftPackageReference "Alamofire" */, 07120DF4296EDF7A00ABF98F /* XCRemoteSwiftPackageReference "SnapKit" */, + F51C6FFA299A55A300048DEE /* XCRemoteSwiftPackageReference "MarqueeLabel" */, ); productRefGroup = 071E053E296BB7B50020282F /* Products */; projectDirPath = ""; @@ -620,6 +633,7 @@ F5DAEC04298AD20E0098A11A /* join.swift in Sources */, 078401DD298A49E300CDE061 /* StockDateSegmentControl.swift in Sources */, F5DAEC00298AD1FA0098A11A /* login.swift in Sources */, + F51C6FF529991E8800048DEE /* RankViewController.swift in Sources */, F5DAEC06298AD2180098A11A /* changePw.swift in Sources */, 078401BD298A484800CDE061 /* ExploreViewController.swift in Sources */, F5DAEC3B298AD46B0098A11A /* CheckPageServiceController.swift in Sources */, @@ -636,10 +650,12 @@ F5DAEC14298AD2A30098A11A /* CheckAgreeView.swift in Sources */, F5DAEC20298AD31E0098A11A /* FindPwView.swift in Sources */, F5DAEC1C298AD2F70098A11A /* LoginView.swift in Sources */, + F51C6FF729991EA600048DEE /* RankViewCell.swift in Sources */, 075BBA3A298ACF1D00710F44 /* EstateSaleCell.swift in Sources */, 075BBA30298A78FC00710F44 /* EstateController.swift in Sources */, 07F0D88C2995F3AA00D3C186 /* PasswordApiModel.swift in Sources */, F5DAEC0A298AD23D0098A11A /* LoginResultModel.swift in Sources */, + F51C6FF92999207000048DEE /* RankingModel.swift in Sources */, F5DAEC1E298AD3080098A11A /* StartView.swift in Sources */, 078401E7298A4B2D00CDE061 /* TableCellModel.swift in Sources */, 078401E9298A4C2600CDE061 /* TopViewController.swift in Sources */, @@ -797,12 +813,12 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 9KQS6UJ9YX; + DEVELOPMENT_TEAM = KSR8K3JPUM; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = LGHTSG/Info.plist; INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "위치 정보 제공을 허용합니까?"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen.storyboard; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; IPHONEOS_DEPLOYMENT_TARGET = 15.0; @@ -827,12 +843,12 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 9KQS6UJ9YX; + DEVELOPMENT_TEAM = KSR8K3JPUM; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = LGHTSG/Info.plist; INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "위치 정보 제공을 허용합니까?"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen.storyboard; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; IPHONEOS_DEPLOYMENT_TARGET = 15.0; @@ -889,6 +905,14 @@ kind = branch; }; }; + F51C6FFA299A55A300048DEE /* XCRemoteSwiftPackageReference "MarqueeLabel" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/cbpowell/MarqueeLabel"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 4.0.0; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -902,6 +926,11 @@ package = 07120DF4296EDF7A00ABF98F /* XCRemoteSwiftPackageReference "SnapKit" */; productName = SnapKit; }; + F51C6FFB299A55A300048DEE /* MarqueeLabel */ = { + isa = XCSwiftPackageProductDependency; + package = F51C6FFA299A55A300048DEE /* XCRemoteSwiftPackageReference "MarqueeLabel" */; + productName = MarqueeLabel; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 071E0535296BB7B50020282F /* Project object */; diff --git a/LGHTSG/LGHTSG.xcworkspace/xcshareddata/swiftpm/Package.resolved b/LGHTSG/LGHTSG.xcworkspace/xcshareddata/swiftpm/Package.resolved index 68ad963..75e2a2a 100644 --- a/LGHTSG/LGHTSG.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/LGHTSG/LGHTSG.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -9,6 +9,15 @@ "version" : "5.6.4" } }, + { + "identity" : "marqueelabel", + "kind" : "remoteSourceControl", + "location" : "https://github.com/cbpowell/MarqueeLabel", + "state" : { + "revision" : "f2c72a5f8568579dade6350dc26a482076d3d346", + "version" : "4.3.0" + } + }, { "identity" : "snapkit", "kind" : "remoteSourceControl", diff --git a/LGHTSG/LGHTSG/App/AppDelegate.swift b/LGHTSG/LGHTSG/App/AppDelegate.swift index 8cc41c8..19d766c 100644 --- a/LGHTSG/LGHTSG/App/AppDelegate.swift +++ b/LGHTSG/LGHTSG/App/AppDelegate.swift @@ -14,6 +14,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + sleep(1) + NMFAuthManager.shared().clientId = "t1d90xy372" if #available(iOS 15, *) { let appearance = UINavigationBarAppearance() @@ -37,6 +39,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate { // Use this method to select a configuration to create the new scene with. return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) } + + func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { + + // 세로방향 고정 + return UIInterfaceOrientationMask.portrait + } func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { // Called when the user discards a scene session. diff --git a/LGHTSG/LGHTSG/App/SceneDelegate.swift b/LGHTSG/LGHTSG/App/SceneDelegate.swift index 8db48da..ba977b0 100644 --- a/LGHTSG/LGHTSG/App/SceneDelegate.swift +++ b/LGHTSG/LGHTSG/App/SceneDelegate.swift @@ -6,6 +6,7 @@ // import UIKit +import Alamofire class SceneDelegate: UIResponder, UIWindowSceneDelegate { @@ -16,17 +17,43 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { guard let windowscene = (scene as? UIWindowScene) else { return } window = UIWindow(windowScene: windowscene) window?.backgroundColor = .systemBackground - -// var jwt : String = UserDefaults.standard.string(forKey: "savedToken") ?? "" -// if jwt != "" { -// print(jwt) -// window?.rootViewController = MainTabController() -// } -// else{ - window?.rootViewController = ViewController() -// } - //window?.rootViewController = UINavigationController(rootViewController: MainTabController()) - + //window?.rootViewController = ViewController() + + // MARK: 회원가입 체크 초기화 + UserDefaults.standard.set(false, forKey: "allcheck") + UserDefaults.standard.set(false, forKey: "check1") + UserDefaults.standard.set(false, forKey: "check2") + UserDefaults.standard.set(false, forKey: "check3") + + + + // MARK: 자동로그인을 위한 코드 + var loginSuccess : Bool = UserDefaults.standard.bool(forKey: "loginSuccess") ?? false + + print("자동로그인 \(loginSuccess)") + + if loginSuccess == true { + // MARK: 마지막 로그인 기록 + let email = UserDefaults.standard.string(forKey: "email") + let password = UserDefaults.standard.string(forKey: "password") + + let bodyData : Parameters = [ + "email" : email, + "password" : password + ] + + LoginApiModel().requestLoginDataModel(bodyData: bodyData){ + data in + print(data.accessToken) + print("자동로그인 성공") + UserDefaults.standard.set(data.accessToken, forKey: "savedToken") + self.window?.rootViewController = MainTabController() + } + } + else if loginSuccess == false { + window?.rootViewController = ViewController() + } + window?.tintColor = .label window?.makeKeyAndVisible() } diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/100.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/100.png new file mode 100644 index 0000000000000000000000000000000000000000..45f4dd41b600bafbc42a6b98f8701642c9f9d54a GIT binary patch literal 2250 zcmd5;`!^GeAKtvl%q5~Mn>(*Yg^;_UHBv5V8*{&fSaX})$*rxzQcW%!LO0gjFPTQl z6!Lymi%Pi+lVYV@vdQcFU%a1lKF@Q`=lS6|&kxTzpDXUJjxu0nFaQ9MIq8J-*x}Is zFKG7;#>`OBI|PjPaC87LM_^w708s8pq&+&xe~E^}zr`qWdYG+up{E|&tMy7OT;oJu z3w)SWQevVf8ThbfW-pNX;5o9aIGa&i3_emz_R=P|quU_`O+YOtAI4~4eqYUul&g|= zR};~AQf2$uFfq*XNy<%O%pXa~;feS^{EQwUJyl>WM=ebjf@YggSqFi^GEx{apy?V3 z(3DRC$g8)*193LZB#_*YVj}|oXU^2zGq<+R53Cf* zO0T99iLF;vl$AZ6g#-upDwi0KD|o4eq$8m9vh%Z62NVd*k@e}76D!PKi+re)w!sfN zXxlb+2IWr8PIM>c`cY3t}DYvla}{YIb84NGU3 z+S-1WLb#i72KxIojvd1m==3`6chnBc2Y~{Twl))nON{;^?a91c0%5B6j!Ea_9Ixv& z=n;X>or7Mls9*wqt*?hn_lb``ZW+|C3K#Rus({hyeh2m9?yy*nbAhlRVqzk1nI-63 z=NzRM@CZtxp=Lo0?+gYRNe{IVC3N_bz^oDk>|h=CpStPQ56qN%}pf zWMpXg0Ev%`YT6Z|^szNt{Ltc<;*GKS6`H;B_F^8}%u3gZswY z>h&VD-xL@ONfnhXI1MQ$SETxojA~{)HPp{7Kg7@X@C1E2Q zYDQ2uj#n;JLtJGr-rMur&JAJlAF=W#jtAuj#6#aPa1nUxrMBj1VbG{z3v<~J%Se*H zsq41(RY*wGugLs^OWT;PIHO;vZ((2%0G!qfV@fLgJvH$dH4!_oIPCOPO!@R+*b%W(GXpoE26<$}^^o^3$l{{y zDtOrnDAD)&?um$q2zS6iSl0iZvh8d)BM|Qz0{G%_E3@!J{-RDbIf~V8wCHhsI7UCz z4|)v$yig@tpD*5(yBZ^Hlh~6{{ehPWoawBou7)-Auu)H^ z!!x&+INixVxwepD9kzSY3-gp#)p-8rhRBmnPK|1031`?i`|4G2?37)>m<1j|1brOk z)_+P`xRbXrbB!0I;^F=sq6~#{uZFpe#e$wTb0;qP{9RUVvpmJ?O#C^2;h@2!>T4ZY zMTaUD1!j@o-7SF@-E;97wwnF+Uci|+j%B8uM-Q#|O%t7?qM*fxaQVkcveg|O66>GL z1_ZbI_s6cxn!OldJ4()f)4+S?zI(l*1qQ2PG{47syPkb>pr^Pka~sI;@to-(9rEiM z{@A>*YuOZop?bBtRV zXV4Uxb((ps*paa~0bKvB7v=24ARO=VlW$;`n#zj19&rNM>rtja!#aMli@Ik|>avD4 z7VDW=b*#(1<9zr$EOV#9vwS}9^<4ya-c_9@M=4gk1#KO|W}S=PXtQK@r_nuDYPf5J>&9!1~2L@4?l;Eu!H4X&xS9{7502+Zw^p)H6YMn`8} zzOs2#TYGvA@-_JM{YHZ7?eG!WL)!3GC?mie=Avo2W|?D=?4O;DP&IFDYl(d3{bka? zrsGG(^MQeat{;2BC#p6^M=L}$h(I;>0Ejl(WE;MsNK1YkN$*#HLTd=WJ2*+MUPR{y zB-6cdwbjjp`Oqa^*3)&06ggxl#(^ZH!_hEZxj`4-qAY|<48GGp{hK9GQdi!NbEV8v3XLQ%)W@y z6er8$R&Rpk(wFj)U^%VkMcsYsn;#BbQB+5Ta^3Xoezh6zh1=!7sH;R@T8IkQ_P7Ko s!XO?3M#n~+Y5_)?^%)-jIfE?;8DH|#@y}+NJI@K=<{9 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/102.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/102.png new file mode 100644 index 0000000000000000000000000000000000000000..2adb2f3aff35a0456166ec6276ac20a068beacfb GIT binary patch literal 2237 zcmd6p`9Bkk1IIVV*w{qGh=quu%+Z6~ww#S^goKq`J?LRMMsh`yS&3lW=V~Rnj|}4vq3LKGnY008RffX44<(ElY4 z+IQ1Q-o^a@lJNGnfM#vVHVqfB0Hm}E8YZyxLov$tRT_g4FB=HMPS1qPc*LO~xpde;tmx%ftlr#*bVA!m$ zV7D(&z+<5d0XtYS4do8B`!qwnpr3&xR{0d7Bsp%PlF?a)8SM&>lS?8ZIr{}U{b9Yn z{Z5ro#!EK*Z=$3}n_H7ffC9AyqA+*pUxGl*0?f_L^L)t59a~an)f1$3TAAuoR6luR zaYosGTiDyadEgiLO28Ftg7Un-e@BMwM^YDwvm?_MWaJaT?IT?>8nJamfyZo;U~iw%;Z4_PtSY3D(IDs4NWU6 ztIOfx4L5{=HIAKP2Nac*(tF$5tmhUMDmWZIkI&Z`xw;OUAG2blMe~Gth!!qThYu}rM*ug>5?@j{RJghe@z-C8+o7|Z^^34y7KwtqLwZh?G#boj z!!e0i*W6qX)JH7`AJpvsHpG^dmF39-7&oo6va?Hew>QCh0;4!@y>iX&d(R(@H(eR( z%27{`5GI4@DE+IeLGbj9jC0Sjd;1vD7}tm9CDVW3%py}PO`=zLs9Q8z)Yd{XiLb35 z02UP!laM|z4TVDMV}2-pY)QB`bSgSJx;|upe|2-gx3;k-6<2l|=i#9tDk{3sx|-T} zbHaqA(cVYDgeRsRL9lehhnvq~bZ?{rTh6~R2)SXE3a{cIv#mX_yjKn8bSN&--%Sj(?Zq>$IX){3ii zQd6=8f_S7>SLNE8k@S(x#mP$Vx|vTWkBdvTdDl!4khE=vjw`qsB==+@T_ib_dqX3aR%2K5|#>N=* zhp{?-p+V615xsiyYV7d)_h%+1PAGx4sg4c~rH>yYahh%_{_@nG{D4kK=yZo@B4as#SR^2X~a5m-#9sebc^C*waP7KirJb)+~ ztq&dgI>@v_FLkYo7l7M8u(mT`D&}ZaRn-We@E!~t>m=~X3p3Kp%p_I6co7xyj^WdU z44HY8nXl~N>iXN6BE`_}+^2$Aa3zbCeJd;JAQPf}J8Job&hO<+XZfs{;pK>xr3=PP zW}sVibc3D&P!dk!W9cDfpX&nbVd3MA?2SEvU@t_l*5%nY6?Ow*vVGnnB&f9XBKQ|q z;u&3B25W0;E+Len_6 zi9al#`n5P+N~t`yfHKZ2+NFC*00%}!u+!6v1MO+8Yr&9-Yg^yI7iX;By&c17XtWZD z#N^S|S7P5sMn*DEjn)N2OIb~qU-_~Os}iWX@(~tlQD#-2dT)A-nwTA>%rh=fuz7GJ zsFrsk=~UNbQaNio^892ii_UtoYu*_oL;?)VrTA-A3uniTWj5B=i(9zc%!S1E6WtN> zL}Gt2LU4t5_Cda}f8!%cJo+hJ*%P7bfk1uM`}FD8KZ!Aso^qg-#O3Vvsu$^9Ylx?VRrsGMEfdbw3J_kN&ale+1x&!J?np5>x*NMXeN5 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/1024.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/1024.png new file mode 100644 index 0000000000000000000000000000000000000000..5bf909b317a82f3875ae0daea5ca599c2d859c23 GIT binary patch literal 35604 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 Yo5PE4bSdK<1peH(W_Y#W%H1db2k9?kzW@LL literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/114.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/114.png new file mode 100644 index 0000000000000000000000000000000000000000..9c267838418d7fff6cc797b8e84e63a7c05411f3 GIT binary patch literal 2452 zcmeHJ_d6R37mgU!C?%ygRz;~5F+)qF6`P`znzeWB8bLlYD@i!hyNBQ z#~EgRN{&4vmaw~qI)DbU2o(T0Z*HuIwvKY9mBgFo+=C2?#o<8JhwGU(b#O9)Fl5_-^D@@Ol5Ag$+Ks$U$5I$tTSswZM%RSKiQD8@0fzgM%er$SltY6qm zU4A9W3uGe>zf@q#qql;?P;Sd!g3=9%Gbs=R%;EFD772n$;F6L!#j5b87BR%R_>lqLlW18pv(R&pHV&evB>ZX#7GLwOPK;Y~okzD>$-0#VM>#yPEE#>!s4yrYHlS@jPIncRhF`5%j}nIQj0^YQV8!}^f#f}P}@ zoSZV$OWb)jf~}z}p{}k8m1ac-s@|s3l0{DLBTR+ahzCJIm6MYecT&*bG{U^O^68KF zN=ro+=jZkJ_xB}|1|jk(t*z?HnOJ&oJ(X%wKmY`c6xeK zlS=h7sLP9>H`*J=$INu!EwU3L_7|cN099&oKcH(ZwD|o+i(<NCQNAyF#anC=5hdx-rJB4-?qR*GNX<250{sh&7a0b7J|X06^V&x5I1+(!ot() zmX_i@Mp&|0L9(&&a9@0Qc*|hhJuR(t_C|kO9xtD*DEDT88>x>-tml@?KGxZ?KR)_> zr07eXw)NZF7-oTu=Hu8zdiT3GVvz)uqUE?Zgy|30x%ghFZ(Ke6QYYuovYo>R#bUA4 z!|xu%;;tceJ~_FYRUhjpKjcQi8}rSZ#Qc2i<6~C-%a={m)LvWLL^>oqa?$$p9hg({ zbDBxB_qd#9%n#0bhu0}4w?}#>(|h%t}iBL<#cFXm0)CDelo; z6S^a=I|szYB_rWc$9X|eQk5s3nWV?zX6oP|N28o(317@9T^()4}p9Tx&azi+7?JF3|Pnke&>lDaAVY^|daDBH{jA|P7Yf-6Hmqdld?4JZJwWFCoX%*u|AGB7KCqmCp3sK(_GE)a+qxo+N!Ekn1F=WH@UHloy|WTjPhY|q)3{r!>g5f#|6#b=bCeV?#!DN z6a?e*r(P?#oD}wWORI*#Hn+B>R-lE%ET_6I7wd4s!!QPFF;klfPXL9CAe&$*ZkBJ`QIalu0(9UF|oNk&yVB3&g?0E8|a&^6VKRrdv*+g4*rN%?EV3S+h^|u``_C0WUUjPw3HheAxF{JOIAE8 zt}?D*}R8d?(u_mhYt^KC1-CIz*yg0uR+H(=^xjUgq;8Y literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/120.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/120.png new file mode 100644 index 0000000000000000000000000000000000000000..b06b308210dddc9236eed5aa3c220fd9663d2a26 GIT binary patch literal 2621 zcmdUx`#%#3AIG=ZDAyym97g99j$3I`=CYj}JILHdh>YBdgf-;8Mef&f3Au|*E<;Dj zZAj!c3TM)&hUGe}W-|78{)^}N;q(3c^m%_@-(SA3Pl~OznV9ge!TXrMjF}0baa?f)064yDVS3pi9J^5x6)-a`KiJa+T*A1_I3A0);{z>D ze)TuKwSsEP&&SsE=B1_N)M^cnUHB`vcD85LcU@LQTRU&f|FW&QIrp#kVUphJzkDq~ zFPj(d$Isu-pMT7{!CcyHV=YaDWaD>uCw}i_u??9K-DPYeCY*WDpPZyr1P4bHUp-|4 zFdT7&s1oVRnnWm5lL#TN3F|ABt@naxIEbQz4a^x}*hpl2u@DsT7?cS%GJ59$Tz>`1 zOj48AB0`-g+goSiA!No;rqr7Z2)hm(?9UOErDSS;4iA6yzXZ`IgC0J7n4Fw^Op`h> z@r$64kQr^;EmLyyIOlL{_XYCBzXX#E=n&zjMNcQLaGcuCRobvBZO%l}imQe_4E~*- zPB=USX5-2WzB4B$?F#g9mF}OT`J9cpZ!0Ty+5KJ03JMAit+lm(h>D7qcXYTOJZ4NH z3=CWj3@7^cIy!=?nwo6(s7VNPfsRsFSJz2J#hn2e85t7qQpB-;y(d2;vO_{c;~7b* zNEi&1qiO{!LTVw0uLuo#d=6Wjo_eQ#p}>f8>KXzJ;<($;s|={ewNAb4ca>1jQGY|!jt<*mTL-ubTS zaL(-2SbPxOCH3XPe1&XcZ1?`AyK`r_-_Yok45_XT#Om6Oiaz+UFjXny(C9Y;E`<3A zb6EV7X>v$O*kOLYqn1lg%#e<;3G@KAblx)a?8=hl7~e zmVoOWVPaCM=wmdGRn&MxoP2wbyVzYkp7(VZgl#!PM^Ju+?S3ZNKhqe>GHx4^^VXq& zBMyFscJ3{Qb^e$UN7{AHR_eC4aiom+yvTpDzZZBxxYjBwlvEjb?eqQCk8@t0p5&-| zde{h`(g*2pC*9uWGDsTcz8Vnk6ppVB^7frO zC@U*H$A-wieay?XU`>nj*;-Y&1wtTu`XS$lapumiuS`v?4~(4Ss|Luf zp_il5+w1C1*dX2NIg2>PTaqy?l46k4zSABwJ)`6RH9(y{6(rbd+A1FHT%hwWY?SW!#v!X1gnbLK`!_G(wBCp~_shyZ=Oy&1!Kga>1u=e+%GueFaj zmBeztASDEKI&OVXeO^1%lO`T^wwx=Pt+_iVq#7^HfkwOqLSi9 zF{sN~%E(kM7yPsaQ8Atod9I3Ll=iIV5S=%;xcF4E|9m_)8Yi&2nt2KlyPE8UxhiAH z^FO))G~euH_$VhQhH+k?y(|*QW*HlIalfY7uO`c_|He&Ee-^y*UL{mP#{V2=^W6)^ z`McE8D~n8~*XF0ay6AKC;%Pc}o3mT>=~4+=;gJx%e!kT<)nCYu_`%K zE$S&j=BwvKMkaQpf>*V%#X6o}7Qw8Nn75RM3iUqml{%0gt0K(8CgC)0m0G literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/128.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/128.png new file mode 100644 index 0000000000000000000000000000000000000000..7a5e22627df5e18a66e65228bf165595808ad77e GIT binary patch literal 2724 zcmds(`8yPP8^*sgV>gLRBimq(Q%UxH8%)L$BBAV@vV;z@M~vtc5wc|+Yql(jv4x3{ zaV({>hQ?vYnr)b|yv}vK|HAvr`@{3xKYs4(ey;1jo>=p12B$a#H~;{rj12WGP89#| zu(6!%E{se6i9q}<46vYjP-qDN4o4$BUCR*1)m$$VtDDGPJ~Le%5+qZ-&vKPjK{!k9 z?6a>EuOu*d>|=C3ao~er>Nj;^1&jD!IIkXVdHr6KR1S36-P-<{cz;kdPn93`-RB1^cm{A& zAgSTU>Hhp4O-FD5BRvE~{IfzNkNsx2qJ6}_a14GN?#ty&JhEpIsMdy&fUgMYzjmZy z|06rvj{J*MssRRrA=;14%$P+-cOA<#grK&@nps#_*di@6YHDQm>FVuX&d$Dwp*`DI z>Fb^0)qE>>tst4P#l9e)p~;)y;!G9c|hRkKxmisz5Oyce;Bc`zM zJO}XY`^tI&r5=!Eal?tPM+Y&=NnE2$pyhh! zjzx$nI?f$zT+=I#i>v8wl(J1VaUW6+iN{tGDb3%$DLF|r8ezM}U%q}_g7=;QuQv}4swj?`FRiUne879Wu5UB! z-aX-x64wxB9sOcv&V>;wLF6ntPcxLv&uqyq-d^6;mYXi)q~G0*!+JlJ*%D_5#6mTH z$D?Bw(%DDT(~g&6U=I%4w}3l~0r zDk8+PJ^uP^#*Bcu($`mxKqB2L6>-p5!;OXPCA2zarn;ou8Z=??dMBx)$z)r~)Up_n zft&@i>Z?;WhU;w^w>k0Ato=*hgGV*xfDrqpRz9itN5k>F z80TLU6}`L|@)c>eRglC@vhn@n`llI>@wyW9rF_l%tfb_-Gx=$fkp^MAD|HRb-ea?6 z`gwXxNtN14N{=yz+qJipghYaIRaMoX zK*VK#5Fpap8dgRmW>F|^Trdl0a%QG!TAEeYRg1tANO3W)&|BXJ@-R-Mfg@x}-d8;O zhlwJ7ZF;r%du#CLlhW|$eGW}@72Ta$S-G67@$of*t;*S;%Lp39R9pNH9(0HCt6DM( zX*-(oNq?00U8J?NbllL_PcPv}5-ll_LP8-Xw6#}EpzZNv&J;Z(kJ1LI!x%$+9uA9z z3Ty0UUW_C}Mx-x3I2vMr#7Q=bAT_q{ss`F3E=M1eub{=~v(bSFUS5UQJpbTDQ!q!W zg!5*3-kI%HRSBD0jW=w@#l*5IN30U^x2QuSPeg15brTX2Qj=uAu-)IL3p=#-^e8C0 zk`X1LYHD6(?+#>f`nG~MDp(=9c6O~}TpS!h!;hGseL%mN^hBlTbHnxfh!1uyWvK_o z-7?+W=ssk=)$KtE|J8jnVAuP%$1(9DXLssuvvro5W?#*ac0h&|hK(Apb(m@G_`kvC zJ>0zs%}-A^j%g8QPgy2s%t$o;HR>2w!2Q>l#ufi(+ZJAKx}Po z7fDgk2qB?6cfGW?{#GRS*&Noo&)QsV#wn>BXJ0k$*SjcUiXgq_79{od^u*y@XqUT3 z__Qn}&+#U7yClU0sY#oSfLun@i)A4^pos>byOa_B!G$|du(C@u@)&S%zD2S0ZSlmo zS~;QG4oD;*Fc9^kwdUYpSUD)bbXBN0bZh4~7@mC3v@m1!xuY?{zzpIMQJq zQbdhP;;Cc2k?{;M=%3ix41zPnpA)TSG$$72&fDP~KJB#=+F4PO(1Y!PIT_1PJj6WI zaLbQH$3MzyK@MCxeHSwbJfv&Mnk+i=VgtSWV1U^=vlo&wtn;J)062;NYXATM literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/144.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/144.png new file mode 100644 index 0000000000000000000000000000000000000000..4f558a76e1d1220392af7009ce4d39b683b78d82 GIT binary patch literal 3088 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 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/152.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/152.png new file mode 100644 index 0000000000000000000000000000000000000000..d9cdd7e351937de4d77db3523ba4fd1b1d1b8cec GIT binary patch literal 3183 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 TG}G|cg8;o8^2*L2 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/16.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/16.png new file mode 100644 index 0000000000000000000000000000000000000000..7fe22a114b653d0bfdb2dcf88365194bc51195d4 GIT binary patch literal 382 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 Ntjxh?)i>@W{TmHwz-Ise literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/172.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/172.png new file mode 100644 index 0000000000000000000000000000000000000000..d955a0a7d3b5a8cbda9877d0c47f64cc9a5214f8 GIT binary patch literal 3713 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 Wd2thUqqpdPN&rj`u8Y@s5c40$>)Sm5 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/180.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/180.png new file mode 100644 index 0000000000000000000000000000000000000000..7a90a5a5e65fffd825e09e5d489aa7618a650099 GIT binary patch literal 3719 zcmeHK`#%#77oN;Wh7#o-l^7|8<-SOT2)Q$Njjt%?I+vM}h$y$@(j>WsFhgN!<=#xl zy(O)g+hlC+Uf+M>{k%WCKb-TNAD+)SpXYqe59dj?vb+Z7m*58g0ASPWS8NUt|8MYt z4zm7Nkoo~|p=_=h0cyxn3;;mzvgwt}wvld2`O$ZBN2EK6fh~<$0ZJaJf=SRk*2_E` zm(Qg>lc1|6iTvk}ciEZM*?bhe>}UPi2B!>5PBooUe|Y%OBa(nph_uKt4)5?66S*sX zO6Mcc#fT!-?8iwqXD^O9nWIjO`tjgi^xXkg44G5FDHwVbG`(DXR3;Rj%zYH-Z2BzA zQ|c52csZLJ=xkST+!)sr58>s*S6)(j2+!oQ6BPEd3$_u!DsWdG&?^VAH#;eyilwt9eEPU1M!`>G7{k@F4TJ#NzHJ@j+Xr?7X&xpho|D^m=7huETTq zPRRX$iN*kAJUIO4UUqhN$lqUQM^T@|CuTxAA~@cmQcpCs))L}z*677oFXc*MmBO(?EI@3q&M?^ z=e?OviTRjyw>lLeHMPOc51m?-xR}s|@Y;PFnvp<)iDO$dCnrf}E3v|@eArEJ5?xgl z;M4VFAk{Ohn6#@5f&9kuqPuaIxoN93WpL%NZp0qK%*^bQQD9ZD(>RYmwY^YpwY&Cr z2d`|_+?-YdMmKKfLBS)36!XE9+nCxiUx*v{ycpK?xh@;Aem zwv2Q_=R7K#TxuUwI=Z^bi;FX!6}BnPeK;X1+V{@$^zZJc#x)bqGH?0x<)oM1Dzo&I zeAvC`TS_*d6wC5<9#T@YiAAh@#VqA=c%2x3qet#X)@Wcsff%G-GJ{>P7SvU zLmA&T%edC&M>f?xKW%`xcR!2Ve18Z$dlUj_4rSE;rqLwIcQuO2iX;@>F|itFDCO<> zuzeGd!1avYUI^=`Lxd}HM-lkkJVzxv@kqm2)tXxroC*bcyA@)ds~XI+RhoO%{BlQ- z1I|58+msNv{TWIjU|(@9Qr$gHfimU}tJ!l{`kozKnsXL!ZoY)Hv}h{`>7BE+u7j7A zA-m^C0uJLFQXFSh-CF$w3iYC1Af+4eya&pSEYHIHfChky+aS)J$^uE_MI_0l|x6)39S ze)MKxOee38CD|rVD=_6;`E)#?K{Rjz|I|2%ZOU1m{#r71+qEFWTZPZVaCZ$Vt_e}| zTW^(wPdXJhH(%0@Tv3KD6G)OVCl9y-F{iX%o9Px8UHU8P)Hp9BcQC>;zI``QTF%$E z^o`_Ai`bD+&Pn;^Fia4I1c}WEIp7Q^=k&$Pwyz!R5@cw6DA{yhITHoOY^ z3pXX-bEU0td7-y%IJI8td%#>T5o3B5%UrtmNXj6l`NzAG7OY_Zbz8HhAO!6rwhe~# zJT!DCT<~O3u~~^T>~_$kpy9L3%>E?&`ZU83%jUz2{F91NJF697|DLOUd0vJL=3Q%z zBA(b;Wfe1k=#3R*DGrDGk$Mfq9asfL*WmHP&a%ak?z%U6dwR0_`(a#Y=Fa7Z@i%dS9_4&_wOaqBIzz!QUU(y7K9I z!=w8|l59Nqqjn&@R6~bcm!Er421IeZeoxTQ$YOHFd2xKKF`!J3?Ra6pZbI

guX5 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 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/256.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/256.png new file mode 100644 index 0000000000000000000000000000000000000000..dff61827e27e698f9825aa10ad76e74236bc0f2e GIT binary patch literal 5526 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 X%;SRvS6n7z(F&NG+%T>-yc_dBg05j8 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/29.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/29.png new file mode 100644 index 0000000000000000000000000000000000000000..1190eb7a317e6fc6a14cbe8f968c4f0005ccaba9 GIT binary patch literal 684 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 Ucy@XFs{jB107*qoM6N<$g1*C}IsgCw literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/48.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/48.png new file mode 100644 index 0000000000000000000000000000000000000000..9b5822ab80ebe4872923e1d052308a36bf22bcab GIT binary patch literal 1075 zcmV-31kC%1P)Px&?MXyIRA@u(S4&7#Q5gQ_rOv3cutkg97|lqHWNx&wG@DX#6N;$`AwrR~3>15i zMw*LWn;kGQ8vx;ea6qL3VhO1fP<6O)K(&M_0fYl81ymg_ z98fKxN&w-2N&!`e3kOt7s1hKd13H~ff?i&Z{oB0O*lP9Ae2yW%U#oU`4w@HV1CLEe zAW_kgNCbMlUdk;`WH1;I4u?Tkisu+>2|z%E7mY?^1f%CfdE~@bB|t^VgDHRtrz0&b z4Z&a#yl_gyi}m{huv*g*2n1m=8IhEf#Kwq_{NOSCT__ZS*=%NyG~Z-0AtfaRfj~g2 zgXfQTErtLk^7&>_R(25AuU|np9D&hj!1(wCYHRB-J3EWIx}#`qJuem6+Gh&Y-;f5JpBmp{c1ElapR#W@ch=@G&MPCJ_n+VYk~*Q&WeLkL|4}xG&Y{Xty?#xnBLw#)Yms4CnpE*-VHMXq$m+6Dk{N;4{j_i zEupmZAO;2=!s#rWL-TCJF$pJz_@_xEDw&H_wNPotoq5Hm9~$_P|c9A*S)Jrm=x zu`eht-Y>21pFgM2)N~r1ogFI#ZlksJBHG$6FoG6~1uoYMl$Djk;n;@Z;n(>3^&1@7_Ha9DIuE>RM!EWH5z^1UW+F3JZ6`X4?wC->-~7A_s^Nff@{Y zc)j1z(Qyf*qocTgzZ+Ruo6*7G3eTRoke;5-_85_%y>RW?6|}cshS%$r_SLFgh=Qm{Qo&~1!j$*} zv;eo;9lQ2c5>T?m#YJ{nEM_KVNqLP+#gacZts{~s(phP7t=LiS1R96YMa6pMlTFwy;XsNCe tY~g?sm9(5A9MDo-CD_6NB`Rq-=Qn`N56|$}?mGYg002ovPDHLkV1n#T?j-;K literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/50.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/50.png new file mode 100644 index 0000000000000000000000000000000000000000..688622bbeb0c16e295a764efaceb9ea8954282aa GIT binary patch literal 1177 zcmV;K1ZMk*P)Px(Q%OWYRA@u(S>H=rcNG7`L~|32@n>WiYMyj0Qe9csl`>n{Z0ufC_M(CLkY)3s z?aJCQX#a&##!5S<4>HEIE9vG;?Qk!#53WtY%i77>XtYB2Bvz`4nrISJ&XJp5Q#0kl zg&_CBCE467-k zm^zgLHAPe+Rxzxmh+^tg3e*%)iCD$3nj(s+Qz>x&E27iswsDtAy?RISe>MstyWC$| zlLKbjvkA3ZE-5anBAc6=+pr0cZd#{1FE1}`m%d9ri9`YhgMpio3eJWnfe?n=pVpJf zB%9^U$n(kz+_4b~G#U#CBJCTG$3eHrWP%_V5sk*U8A`sszRtEA=;>8jwD#|fBdIxK3Yk2x}4o8l>gG-k#!|VMOWo2bpTwFwFX9s3yXCaDz!(u69 zU&_(n-^b(;3HR>ZhuiHzVPPRRl~oaHgxIaFu7)T+fL^ap`?}qq;pR;*%w`j8wh9al z-9l|`Ef;$HcoRaQ5UySO4&B|Kr(>>P@4@-=U!tzA4v!v*SXo)Y)YLSN9(@;Q&YVMk z|BomwE#;iS;J+9f8-vT$h001B7a9(S;dGwDjT=9+x_TO*{%!-o^wq@zX#1_qfyQjUtX*=*?T{hqholP6PfI-4;t@Dn!? ziA2!Z`3d}fKO7DR9zXtvw_-3DL}OzkE7jA}3x}fyfxuskOV`NAAL!_Caj|rU=#0(J z&!fG)4K7y)y1LxFD_)z5nXgPqQevaI`9oGBmD-w6fxrVid-fkoOdw>7Mx$Ib*{Mj{ z*Q8K=eLW^8ClL%zb5bg%rR5Z}ABn8+nVFanF+CkZO-(hLn%+k|o&ZgJ`WzkolYOOW zMY$y6NVUxK!IN#LcfV99F}l??O|BF-Cp94-nZ%kjiKroJj`qCKD8OVAIH`n3SbBXP z7fEpG8GQuMH+?(#g;5uH%;+G6ST7GBad8{3xNcCTH#y-WE9$9{FZI z8>F$kTdqAdlI=;GtLyv!w^pt)pY=DH_D4^SNv55V91}$QqbJt{(G<}XQHud>{Hn#Q rQd~_DrOc@nrzxTqvr2LIjUq1roxUt#X$k}700000NkvXXu0mjf${-`H literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/512.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/512.png new file mode 100644 index 0000000000000000000000000000000000000000..32c4832656f8023d56d28368f7f6f0c4efd96a6b GIT binary patch literal 13146 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 ZzO27cewqzUg8_g)7Uylwq0e~U`5#lVj#mHx literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/55.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/55.png new file mode 100644 index 0000000000000000000000000000000000000000..645670215db3480ffead11d2474ce933aa97a582 GIT binary patch literal 1299 zcmV+u1?>8XP)Px(%}GQ-RA@u(S!+m}XB2*tc#F4!Xwzh}uInsl*V!MoL??FXT%omNYhe^dCk#gE ztTwbdFPRpG(9J2W?1x=SoTSbTYKiSSVbFhNKe|6vJE&b(5idxMM#QLziI;JX{bCXg z{rd0AcwY#ZlXK2{p3D2aA*yt`*VgbqT`B=CN|hDLMX7KQ$_eEZ$bhh=0!5KEl2A?- zO$tmB$|+D3StAMMWYMI+B%z!FMUgdM1Vm6&$15;I+KG9Ff*7 z!BJz6$HOl`^`dwUNl8hFkB{f~b8~a>`~6G+4G|X?hvejB{+nWMw;Mj6kAbA7rg9DS z^?JQnTwFv0&U^ub!N3H>#>V2wlYh|F^$QXc6B*dy!zLU$RD@^G zhH&#{HxEF-j7B4lA3uhPi3uLgV9?|4-QV%x!CwrLRE&*{fnIOG@bEDACSXKJVPPRo zocM_Q6FIA^D`;!`5!2Hy&fBDP_%F^>OF+eqi6 ztgIZJon6St$bi%7#NNF*a5!#Z=g!x0`}Q4_mVVB;y}iGopdcShOFmYCEOzi<0R{&L zVK!Hwsp(tv_YZJxZtgp%to#aAs}0+?XRr$0-M^xw{o7#kZyN=gdbiY%R(nTf^41%9B=Ss5Q6<8!Xn zCLlXI8|$~t`jtbypFaIJWKWurfY6+YiCQL&V&N;|RX_!Pzb_=84s1h`iS++DDhMy44Z=6s zMAwUeR3BdRvcBP89A0HlS;|EkINIXki*vLo7V#2~Rv=r=Eo>RBY6|6qatdTX*iwO_ z$Qnr~CyOQpCJE&fD2l9+gmSWIQecu$PJyDx8c8T8izWpo{Rc+EUd}6uv^Vg literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/57.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/57.png new file mode 100644 index 0000000000000000000000000000000000000000..dd200120d98c9ca3ecb70c02f2d0a7e52cb59d03 GIT binary patch literal 1324 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 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/66.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/66.png new file mode 100644 index 0000000000000000000000000000000000000000..7744e53f491099d077864a4d3bd19a09f309d646 GIT binary patch literal 1517 zcmVPx)r%6OXRCr$PSX)e#XAnKy1j@w<3z!rlK2{!tC>9zEu>}i@u7)To!B`vb)ub^* zqY@NCO+ly;O%vM^AF3d!LE6Sdso>?o*rW-GQL8oqja14-P?4LkyUiK+*IjO1?3}yB-k{@7bXX9ty+=3lxaaYEU2)2v=cLMkphc5fcszS{hm!S{hm! zQ~i=qjZlqHjZlqHjd0`t78OesOBG8MOBG8MOE(Zuu~e~Cu~e~iLn?H#RI!|w+Dh8UEm>_XEGpoD18@F%Yfw#ApfaEqKm=F_N zupkZ%4VTCHRagIn4I4g($rOrLuU?_7tOV=V=eXGA=NF*3xCG(h;dt?)2L%QB*s)`q zu%xrI6S=v2aqe6VLPBQA_uASTEM1y{Cr|#y-MjaYlJbcpvv6Sonwy)2L1a~XdpmaT z{!#!gE z=v7r`kdcv&rluy`zyAQ~>1pWe>qk=35P;nmpqhwM9lejIEzyMu{5!1neI zWM{8IMaB10T3%kBxO}-DnVGBq9}ris){g_?^yx}$+O!oW(+GW8k6m5QaOB9>*tP2m z36?;Vm!E*$Zo}cjMFJ8}mIeCL@nRiTt;%|H zAgB-Z^>yQbsH{ATEnBt=5KM|S$*ZfY3q?hR$j#l2ef#o+5j_3u?6o*~@>>bk0E1vH zTJ)hLIWRDY%E}*MHm6A$kP&HVpNd{2Cx47bj~+=v^to~4I-;YaB_?W6V&X@lF?^4q z3$$ektyp0ZCbBfl=H-|*>)q*>2E{EtexVBx1|l^zwOF?o5kF`PgDGkSV@qV{F9HYQ=TPU9Z;;+_;!`Wu1qIRmB-1&;~vGsTWA z))gM))7oe}6upb6AeYs!I&0ZukGPKB;fDifWMGi#g!GX^R8@ERG= z?2gi-En^uwT+#NwrcdX&VlpuFN7pDa3WNgTS|rK{WrQ-q{ef!AhWnO2REoQH zc;nw1Z>cUSBa{(tP+Qxlwoh%JDwZmiDwb{_pkk?FsbZ;O>4sG3WT|55N|S#9#pVS7 T*a0zO00000NkvXXu0mjf2`;q` literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/72.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/72.png new file mode 100644 index 0000000000000000000000000000000000000000..491ed68e2c2e3c2e05faaebdd4c4de472d3af917 GIT binary patch literal 1649 zcmbuA`Ck$S7{ilUSnWkJ#!1p)M7Em}y>WlU@_6zGgAy!8s^j58vB0Rss>ltSSeK+)-exzmWu9t|jDSk^oZ zr4(DjL4warnXfkRkX;(!uBF*ND$rzD)&%;F!kFER+qYrD7z6_0r4m3|K0f)*$pT?- z|K$8KN#si536)K6ubYoWIX3KV`B2F7HZ(TA>Ad56gWrHr67xuA#(n)(Ci0 z&&|u5P4?h--EdDdf6Ln+x*Zr4^vFBfH!e;G>*wcf`lYzPU$3ni>F8)Al}e|M!r^9N zVH_I9lw2S;yu6}PsY0)NG56_>jD*qb!;g+L7!F~_F3kRsgTtqRoyOn}wJ2U@W+s_T zj)T2&a(#KJr^ny+20APyqy2B=_U)8Qd3jV9ZEbBF4#yZ!+V*#~r@XIjZ@1=fRaBnD^!2-07KetXeksqQz@{WvQ*-lz>gpIBUCzPt%Qp!2?7%Nj zN&T_`p8iNu%}m>mGcgw#39lKTNl=SGp2u!hiC_rrha_ zFHMc2(WHTp`V)q9A$=#I{!F`ZbAq+A^DK&g_b%A_NF=9J@mXuqM6M@Qb~ttDT~m|u zbNc(~7aeO*TifoE{emQmLigb{BeLmFOYh!c!$y3#S8Zk|ZfDduo>I&Y>^)pLmRzFT z$J3li;39jqd@;HF3GyPnFXv^4G^^px#_PGXG0BKtrM~VXE?T;TP%LXIH zA5p@@i@< z7Z&1^92PL8!r0yes7U?dp>bCwA&Za!^1b1QkOE<%{qTk?#tGWEUx`NkaJ$c06@ zym#~CsoF+$(QC0-&1g8?whxi(cp;r#y$6j($29M*zH^5?gXdR-AV+~5Oka`BM?><* zB@=IkvKXhRsG!vF`I6OHUhQw2C9LIaUBh9~T4}^K%uw%GWaL-&!3dB`KHw3=<$@6< zw9C~+WaaYr>E?4bhax6@mFACv1HtR^*Q`=|QOT9+ zX2GZhEY>%~HC-ZcIv^@a7%`%rCR6iz|gY`ud5Z3n=G>~CG?ep=D|5CA@a;NOUi&i)sZ;ur=1 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/76.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/76.png new file mode 100644 index 0000000000000000000000000000000000000000..aaadf4f68309e4dfb3b3dbd1a1dbdce132eca07e GIT binary patch literal 1782 zcmb_d`#%$k1KrS&yh>s$sY~4Q*f*|uEU&yuVivn2F@-UgH8W~tqbZ55M;Ka`S6+AX z^{Bg*b@Q0MOyv>F>$YoF$R?DDuKNdkf4e`NbACAI$MZSomcO5u`fl)U005xw<9!OT zqrU$@1+>F`B>~5F1V})5xdB=Ph93X`5X5Z)sXWAY#7n1F^AM@1d~z(CPWNso zPKrDpb6)B8PdV6FH1`2ijt;rQjyZmq$@j>CnxYx>ac|6RmmV~`r#2uHjMaIRKzkPR z_#uBwNRF;tYUS|mkJO2M-Nv22CqxN02JNDwjHEfY%1-zRolIwIcurA0Zo5oHHM}gY zPN_oSUagPqG;?cXU{xrjmY1cJb%j`}uy3!{%h8D4zTPfo!P)(f0@|nCOBj3jTk7&B$n-V(|1KHU z?V{b{a5z(-`Gtiu#>U3qG$`w9YXR4CxU>2$h8z6So|Qbut>YfjVHm-^1m5;7Ure~6Wrm)uZakFiei zmEHG-8N3w`OE66Z=&Nih*wq?!k?L8czSwXv}&>_+5ECRoT$boBLoGBXt~u?MPha*VLk+|Hxk<@D`ZlQRV{dmEmag+*1R zBWawNZ)EpotohxCiT_3~3dQ26A1y7bpI+;_boT67b(0^CGatj$oa?Hq1Jcsqalal4 ze=t;bq7Ivwcz1nyh&euv5&+e2-|%?J|C%dcI4=~OiHLyC{bg7qk(gaGBE7qU4rgsw zI$rljB8#S=C?C}J$5DoTzf_vI*+9!u3QXP5Y{N|;k}DYuBcLZ*=!M%52rPxq;Dwn# z5mi*(NlQYjqF>oJ4j(>TUsF?@XV_oc)U;(tIzM`@E&REo&Gl{a{bRO7bz2)7|HMRV zXH88_f}y6-$=RWxg}upTqK-A0tX3=z60#!T7q}@D5ioQhZ4q^HzwZ6&`ud6Qknt%_ zr@4cJaMyV8vC+0vf~j)sA5s)im!`L#Ku(4RBM_&vH7~TcnD5j7+WrMz`g5$Sn_g*<#M^XlT+^c;s(|4{t4533&Px=0d)B)Nka?n?KY5 z7QJO~#{y3;ya&r852bzLJ>eM!rjP+@@ls_^8P#o{V`8mZ^d^(C5=g?ArHWFbYUT`VoxIWmBchu^6dw{Ys;l)+dd literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/80.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/80.png new file mode 100644 index 0000000000000000000000000000000000000000..cbd1aedc1c9c02f8b8f431a8a770d6dffda7a122 GIT binary patch literal 1884 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 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/92.png b/LGHTSG/LGHTSG/Assets.xcassets/AppIcon.appiconset/92.png new file mode 100644 index 0000000000000000000000000000000000000000..d627e6adcb87f72cfd807c1605e68cd4b63ec3e8 GIT binary patch literal 2061 zcmd6o`9Bj51IIU;8OCyk%^Z8BZ>k~La)rnlb5wjKM@lR)#xwWBY?{J+eI4J-ePqa# zT+bscN1ku4%8@G@a?`$YAKBOQPdu;Z^Lo8M@83SZev%y>tR%#g!~g(*gpIX@^NBtF z3lwtFbNtV4Cjye3t*!ys1IT3nK%~dU!t7>*=Q=a?#^^2CoXkms=a;ff!k)hU zvy-VBypC*!!v_&l?3PUi3Ae-BG;Ak*-_PS4?|Nb-)YNLXgy4_CFqjA8kysaJ`-dMd zH&T}fVKd_wBBnYOoBf1xJ70JFf7s^SRCjmx@>Wz-RA7N&bVXCs>A!lSc!rR~go2r~ zrdna-$%FU17kvm3Ipa|~U?s=_EKJTnpP*a=BXo17?c`mqCXnCk7VR&gv8 zj{7n^48vfc{r`xFit3u61JH0mmzBMI(%6V4k`Ta)7i+YGr#-A~_GR7g+yR=ED5p(NqqG$~ zRB<>s+p`sdwn{6b>gfMoDSFS>S5<8Wq+p1ZMVYXZW@ig|9W?H{FJE%jhz`oi%Gz-; zSH3L#DkvxuCZsAGB-v`kS+mX&Q>iRd@N@jD-y;#R|y0!N68)eo=H`d#? zHR*Y8C%#Ab=G4Y#Wc;p8$TTqy4!r#CLzYShnJc$-+Mm~ulG6X`(H9(#&$l9U+&U$r zD>smD=!-Q7EmP3I$BAn=#3Z&w|HV_Yu<98D^z7eqbu~A8hoLhVi7ZwnxX*nasw_<1 zMgiD~FhuhoR z=~-E#0Rae>y|?t9aUAAOHlPA8u;u9Jq&RuTDH<6WvD`Z3N1o9N^>tC2nnCdl2K?eC zi**i+9C?C0+*P5{={U7Zp_k@k7ah*@$oGVJQ=#J)az zaBFonGfGX!z3#q#W_CgGw?_nm_xc2$<3APjeNw$;U;smKv7B=-Eq_9#ezbj>mPXlJ z9L!DNPm<%~@z14gYNy*`Mg02c2ryD@WOVeJr>EpgFM*<*;9$GmduQ!my!G|RO*wPZ z@gHSmTuq&v)b=||eE0)>eUzh^xn7{hmL1U8*jNG^>`?LNJ!zr6rB6V|yLUm$%Lr98 zIyFQ7v1lyM`ML^?cD)`?rGf=oyzE1#U&pVL5btKsYOpE3J#ob&8V3yzqL&gqL879) z-h&0|Bol7knZtRZAko&wMoDbY5yc&*DW2eKCkj;%#us8c^7J=|M|*=ePk}LMNh~6n zjI(w)R*+Oa_-z8vi20RPiVuvn^u7A>PE)p6vd*hNa6v~BAt9utuGyt7wIZ#%2Upj= z9)gk~u6dvKwtGv7#nORj42E5w=i*{gaVE8Ovn$!9Of#g*FlJA+uTa45pC--Q>R)hs zMd#5=OJT&A+SXR(_bG}XR?w6PRiO)&p1CE3Gb8| zh^#ei-@JL%T-y6`x6vXa95i`FWO%3Ny$2wbb*FSD> z79-wwZ#KD&W)nJfjZo$rELwV1Rh54wIxr-x6CWI`1r--BwG;JZD=8`cXP~#2Ng;>T zcm6!QwUF$MlF>-vw+D`U-Y3dUwMH`*u){S<;`Hm}`cDQQ;@mjGVICQh%8IbeHKK^d z{n{%f6|>zITcIH`_1|lt%IjSmR4O;Qgg5_TNJfhQ0+EQrr5n+!lXY)mkn_Bof#zQ? zU-Uv%t(gC`zt`M-ig23w;?1KsYh35B1#c~`&v_4s{G>rZ#U-(a=__EjnH5;Mkv8$1 z$I5${M}Bdp2n0j3`}#*hwQlAQ4yT-0iO?m6Cpn`Onq@KJz7Y0+;|CBZr=vWmk29iZ z8|lq+ZXQlmY&I}I2Zwox<@{R*&U>cv7h@-A}i1c4^J1zkP61P*Bu29C+}U}j)&5J&?uIS%mvNyizC3=9e!#y}=ZBG4fX3LrNL ij4B=tjS-bLT9~($GS%#K)4vBy{tTY3elF{r5}E)f*pUDL literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/box/tap-image.imageset/Rectangle 172 (13).png b/LGHTSG/LGHTSG/Assets.xcassets/box/tap-image.imageset/Rectangle 172 (13).png new file mode 100644 index 0000000000000000000000000000000000000000..df3c01b188918499467e925a35b77652e02d2c90 GIT binary patch literal 545 zcmeAS@N?(olHy`uVBq!ia0y~yVCn#}6FAs_1px-bDCPI@syaM# z+Fe}t&AiFYz_6~Kk>P-|03!p3BMXB9iy%XTfC~eI)2P5eh6mq5116cHj5C3WfPul& L)z4*}Q$iB}S~5$M literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/box/tap-image.imageset/Rectangle 172 (14).png b/LGHTSG/LGHTSG/Assets.xcassets/box/tap-image.imageset/Rectangle 172 (14).png new file mode 100644 index 0000000000000000000000000000000000000000..04f944aa0b4eb3ef8564d96f3e863b21374845b6 GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0y~yU~~bp4LI0 zOlTUv3`pH;1R?EMEJRbF5c&Cql^&1p6sb`qMYWg)P+eA1-Abb|v)k$HwJFIPH9;=5 z^z@8FRM`=VPPx>=fY(`RFl3tY@^XH6I2;4fWQs~f&1Q>5l7>!EundU-k+IYj(Wq=h zf+OV4P|$+JLR2ItB$&YD{D??$T!KkJ&W{O63gHsDK}iyF9I}1jZ4UP`tQFyMn%o$na|M*;wvN}XhE={z5UkrfoVYmlW5$H2T`X>Ef+=6;ZFz} zgFc^oJCc_ihlO@B)qx445*(4VPRwilYQ+V`_y;K*pxZ zKW)eax#dK1kG)Ws+-|p(2V{bh#GZi4;PtX9{*;YOLBXuM)3I@#X2`}yFq>ytRY;CQ zKKv5+=@(QA&P_vFx}1WD1+=>lEG(upe_To4=-Y=2&b7yg1iBLfTWyBAlRuVCK%d(d$4Z#n;x@-n1oG-#ppI~^VJ zcO^>}Lz9vMkH;hD<>Z!>l_E7go$B%8azg{|c6LSGPU;UXLCK=@a4jn*2k(9S0S4Ve zSX5GilV6{}XPH)74YwYVW(M|)cv8i|Z`O$DlV??RWufmwxxczpe1PzaMS z_QZK&q*HHhd3q~uwzZ@6)@>X+ejG`JtdKC`VyoDl?`o_(h@Xn#b$TS%7%TK3aFc|RAvWFp&^yU>W#K{xiAeXeE^2rT2 zbM_p1`}*cqe zMEFbebob!({coV|+wahE`! z=<&z7bFjCz;^lpNasT2)SVftG?x7(fWS76q&dr6hrw4kY0sT%F`uqElPtr^yE$E}T%jLx2z#x5>1Fcp^ zW0#@pPAB^N`jAHw)arHc(b(f@&fZ?dMkXeLV+tUt@`}S*#YlNV(*pAkN24!uJP5;H zp4j29oIj&&NVxAp^YfsRGRJ`^4109c3DOEtAXT^sl|qty-LzDLB43l0ZAoRL&0Md>X6AKB3hwNM#IJ>>&nc_uZPxO3BUO+_1Dv8}Cj zE)U2OS3geN&6IgThU0wpZTh~zjTo~rQzctMa&aKgYA z4LOdejtzN1gM+E%B=AI72-K26iHaPD;`^c_*G#y(+k$BYqdD5QBlMa`Bq+Ww%I|9$ zjTv=}rF2u&iYW)9B_unn(`mN0w*IGh>YCJ*W^RC}k7`Jw(lBdLu|A}OaZvpc-XPZmNO=krKu)Z!bC)*4k1F4 ljow}42Sg+-TRcbw;(wOIv_e6#$cX>|002ovPDHLkV1g+_7rp=h literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/iconImage/profile-money-mini.imageset/Ellipse 10 (2).png b/LGHTSG/LGHTSG/Assets.xcassets/iconImage/profile-money-mini.imageset/Ellipse 10 (2).png new file mode 100644 index 0000000000000000000000000000000000000000..bee8d6eea4e02eba7fceb2800b982f65d1bb5869 GIT binary patch literal 2728 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 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/iconImage/profile-money-mini.imageset/Ellipse 10.png b/LGHTSG/LGHTSG/Assets.xcassets/iconImage/profile-money-mini.imageset/Ellipse 10.png new file mode 100644 index 0000000000000000000000000000000000000000..1310747032068a78f9e83851fa9833c8afc44151 GIT binary patch literal 748 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 DJ(QJs literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/iconImage/profile-money.imageset/Ellipse 10 (4).png b/LGHTSG/LGHTSG/Assets.xcassets/iconImage/profile-money.imageset/Ellipse 10 (4).png new file mode 100644 index 0000000000000000000000000000000000000000..1025bf882a04002aa987441fd92d2371ac1c71c1 GIT binary patch literal 8159 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

  • `lsBj!W#cdUS?La`i_kEZk2NMGfz~wdnw>Qx&cnnenV!g)#!eT#ir6rP^ z0YHK8wS8b`cw#caa@)Hm*X|A>%TOXuu zAl4FREQLDE$<5+8q+MmBLu|tc+YQ88>fmHej_q~>%ZLv1-DM^Q^&1KS>9S18yeH+V zK=Ohx0DK;4B%b|7Ptu8k4AL5R>V-lVw<_^bp#3wrzz-QV~oF> zgMOeV;Z+w2$)Kia7P??C5`fI#p#g&oOK4_fkt6zZVX<#Hi>nj9Rwc1T6w4CA`;p?8 zdvbC@vepwBKoIuR0vi`BBSB0ydc39h2e&5OAD|+`WjzJkGfPjD`W%A+giqW^);OiA zs>7qA3Lbh`tOvD;M=w(MOb;78u5W)7w*e(FNA=m@v+x^(-O1?KJ=Tcd6!VE*5# zvO2zd5J(6<{wk(jKM&9KAN9ZkRj9yznK3UTq)|Pi1h}vGh6ad2r{BjFzuGf$ovj{)mwpZ?T z=stu2Tkh4jP_XlSzkTQYCG(((n_|$^v_(S|E%dhN+?@MF>~{yZLFvDbX1y-^x?ziM zGqc9(tzrW(g|N=r&onq!d+ifEs542DEmvL?%AN7U`T9sc>8X!`i_FiDGiU1R>Kz*g z9c7V^GG{_;p)EdVqmN4*DC^aalg#b!SzX2&SceWws>@`=KlPs7b||kWP4LawTCMMO z2r(W1$oOo25!>Y`xDun_F)sYHpb*pTm(gY-^XhXc8gHj6KLZv{Q5U>O4O*#Ix!?+t zu9_lb#7M#SV^rIksysZj_Ez6=SI>DPdU2(+ui*Z0ap8Ey%g1Nl!TRzhc3rd2W@Aay z_0Ylspm1sp6MDY8BfjCyT(0!h%Y- zDHSR1nei>=c8>?X!Jp4laBja1u&j>M%n%a#hN7k5pI9#A)Z@+1&B;od1lEDHXxJi% zMgs<s<}8Zf@mo zr}Lbi&T(XKJQ0N`OdR`42GUmof{|y)qf)O*^{To;E7AMJ?PKW9@BK6NuRPYWC=Dc? z@zz_3H*_2(aJZX7syh3ⅆ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 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/lghtsg-hg.imageset/1-removebg-preview 2 (2) 1 (5).png b/LGHTSG/LGHTSG/Assets.xcassets/lghtsg-hg.imageset/1-removebg-preview 2 (2) 1 (5).png new file mode 100644 index 0000000000000000000000000000000000000000..bd348f21968057f6c793d6eff03e0af00c6aee1c GIT binary patch literal 71679 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 V+GtNy<1gRG#Mt6&`DwS`{|}Ak%;W$7 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/lghtsg-hg.imageset/Contents.json b/LGHTSG/LGHTSG/Assets.xcassets/lghtsg-hg.imageset/Contents.json new file mode 100644 index 0000000..f9707e4 --- /dev/null +++ b/LGHTSG/LGHTSG/Assets.xcassets/lghtsg-hg.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "1-removebg-preview 2 (2) 1 (3).png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "1-removebg-preview 2 (2) 1 (4).png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "1-removebg-preview 2 (2) 1 (5).png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LGHTSG/LGHTSG/Assets.xcassets/lghtsg.imageset/Contents.json b/LGHTSG/LGHTSG/Assets.xcassets/lghtsg.imageset/Contents.json new file mode 100644 index 0000000..dfb55de --- /dev/null +++ b/LGHTSG/LGHTSG/Assets.xcassets/lghtsg.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "appstore.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "appstore 1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "appstore 2.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LGHTSG/LGHTSG/Assets.xcassets/lghtsg.imageset/appstore 1.png b/LGHTSG/LGHTSG/Assets.xcassets/lghtsg.imageset/appstore 1.png new file mode 100644 index 0000000000000000000000000000000000000000..5bf909b317a82f3875ae0daea5ca599c2d859c23 GIT binary patch literal 35604 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 Yo5PE4bSdK<1peH(W_Y#W%H1db2k9?kzW@LL literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/lghtsg.imageset/appstore 2.png b/LGHTSG/LGHTSG/Assets.xcassets/lghtsg.imageset/appstore 2.png new file mode 100644 index 0000000000000000000000000000000000000000..5bf909b317a82f3875ae0daea5ca599c2d859c23 GIT binary patch literal 35604 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 Yo5PE4bSdK<1peH(W_Y#W%H1db2k9?kzW@LL literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/lghtsg.imageset/appstore.png b/LGHTSG/LGHTSG/Assets.xcassets/lghtsg.imageset/appstore.png new file mode 100644 index 0000000000000000000000000000000000000000..5bf909b317a82f3875ae0daea5ca599c2d859c23 GIT binary patch literal 35604 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 Yo5PE4bSdK<1peH(W_Y#W%H1db2k9?kzW@LL literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/new-logo.imageset/1-removebg-preview 2 (1).png b/LGHTSG/LGHTSG/Assets.xcassets/new-logo.imageset/1-removebg-preview 2 (1).png new file mode 100644 index 0000000000000000000000000000000000000000..688582d4b16bd66e563f46b9f53988c796e7a7e9 GIT binary patch literal 11273 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 Dr38=z literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/new-logo.imageset/1-removebg-preview 2.png b/LGHTSG/LGHTSG/Assets.xcassets/new-logo.imageset/1-removebg-preview 2.png new file mode 100644 index 0000000000000000000000000000000000000000..65d9959610ced79f942ba4c486fb8cee1690a796 GIT binary patch literal 4240 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 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/new-logo.imageset/Contents.json b/LGHTSG/LGHTSG/Assets.xcassets/new-logo.imageset/Contents.json new file mode 100644 index 0000000..d5b6400 --- /dev/null +++ b/LGHTSG/LGHTSG/Assets.xcassets/new-logo.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "1-removebg-preview 2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "1-removebg-preview 2 (1).png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "1-removebg-preview 2 (2).png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LGHTSG/LGHTSG/Assets.xcassets/rank.imageset/Contents.json b/LGHTSG/LGHTSG/Assets.xcassets/rank.imageset/Contents.json new file mode 100644 index 0000000..74f6aa0 --- /dev/null +++ b/LGHTSG/LGHTSG/Assets.xcassets/rank.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group 144 (10).png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group 144 (11).png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group 144 (12).png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LGHTSG/LGHTSG/Assets.xcassets/rank.imageset/Group 144 (10).png b/LGHTSG/LGHTSG/Assets.xcassets/rank.imageset/Group 144 (10).png new file mode 100644 index 0000000000000000000000000000000000000000..7d242e3dc70adae0a928ecc3ea4f971a94868b63 GIT binary patch literal 3953 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 Rat;6h002ovPDHLkV1oPh_>2Gm literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/rank.imageset/Group 144 (12).png b/LGHTSG/LGHTSG/Assets.xcassets/rank.imageset/Group 144 (12).png new file mode 100644 index 0000000000000000000000000000000000000000..ce3fa28bb1c49a5d9f0090fa40f003f9b55c7f2c GIT binary patch literal 13634 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 U(D_NPSO5S307*qoM6N<$g7#?legFUf literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/rank2.imageset/Contents.json b/LGHTSG/LGHTSG/Assets.xcassets/rank2.imageset/Contents.json new file mode 100644 index 0000000..7da92d5 --- /dev/null +++ b/LGHTSG/LGHTSG/Assets.xcassets/rank2.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group 144 (4).png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group 144 (5).png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group 144 (6).png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LGHTSG/LGHTSG/Assets.xcassets/rank2.imageset/Group 144 (4).png b/LGHTSG/LGHTSG/Assets.xcassets/rank2.imageset/Group 144 (4).png new file mode 100644 index 0000000000000000000000000000000000000000..344ee28940c47179fc41331df03af022d4e3a089 GIT binary patch literal 4064 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 JPDHLkV1nA1NtXZs literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/rank3.imageset/Contents.json b/LGHTSG/LGHTSG/Assets.xcassets/rank3.imageset/Contents.json new file mode 100644 index 0000000..0c9dee8 --- /dev/null +++ b/LGHTSG/LGHTSG/Assets.xcassets/rank3.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group 144 (7).png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group 144 (8).png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group 144 (9).png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/LGHTSG/LGHTSG/Assets.xcassets/rank3.imageset/Group 144 (7).png b/LGHTSG/LGHTSG/Assets.xcassets/rank3.imageset/Group 144 (7).png new file mode 100644 index 0000000000000000000000000000000000000000..f3a3ebfc4c30538358f5e670cc4309c5b99cff40 GIT binary patch literal 3946 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 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/rank3.imageset/Group 144 (8).png b/LGHTSG/LGHTSG/Assets.xcassets/rank3.imageset/Group 144 (8).png new file mode 100644 index 0000000000000000000000000000000000000000..2e4b21a1480e6393653b7944b6cbb9fe5ceedc67 GIT binary patch literal 8339 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 literal 0 HcmV?d00001 diff --git a/LGHTSG/LGHTSG/Assets.xcassets/rank3.imageset/Group 144 (9).png b/LGHTSG/LGHTSG/Assets.xcassets/rank3.imageset/Group 144 (9).png new file mode 100644 index 0000000000000000000000000000000000000000..4d618be2c379e87824df6a74395489865982b78b GIT binary patch literal 13668 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 Void in + self.YesClick3() }) msg.addAction(YES) self.present(msg, animated: true, completion: nil) @@ -356,10 +382,15 @@ class FindPassWordController: UIViewController { } } + @objc func YesClick3(){ + self.presentingViewController?.dismiss(animated: true) + } + // MARK: 인증번호 관련 동적 변화 라벨 var sendCodeheight: NSLayoutConstraint! var codeConfirmheight: NSLayoutConstraint! + var codeConfirmSuccessheight: NSLayoutConstraint! // MARK: 인증번호가 성공적이면 비밀번호 바꿀 수 있도록 함 var codeSuccessheight: NSLayoutConstraint! @@ -397,6 +428,9 @@ class FindPassWordController: UIViewController { codeSuccessheight4 = passwordCheckTextField2.heightAnchor.constraint(equalToConstant: 0) codeSuccessheight4.isActive = true + codeConfirmSuccessheight = codeSuccessLabel.heightAnchor.constraint(equalToConstant: 0) + codeConfirmSuccessheight.isActive = true + pwheight1 = pwValidLabel.heightAnchor.constraint(equalToConstant: 0) pwheight1.isActive = true @@ -432,10 +466,6 @@ class FindPassWordController: UIViewController { super.viewDidLoad() view.backgroundColor = .black - - - - // MARK: 네비게이션 컨트롤러 self.view.addSubview(navigationBar) let safeArea = self.view.safeAreaLayoutGuide @@ -449,15 +479,20 @@ class FindPassWordController: UIViewController { navigationBar.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true navigationBar.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true - let navItem = UINavigationItem(title: "비밀번호 찾기") + let navItem = UINavigationItem(title: "비밀번호 변경") let leftButton = UIBarButtonItem(image: UIImage(named: "back-arrow"), style: .plain, target: self, action: #selector(tapDismissButton)) navItem.leftBarButtonItem = leftButton navigationBar.setItems([navItem], animated: true) + // MARK: 키보드가 화면을 가릴 때 화면을 위로 올릴 수 있도록 + NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(sender:)), name: UIResponder.keyboardWillShowNotification, object: nil); + NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(sender:)), name: UIResponder.keyboardWillHideNotification, object: nil); + heightSetting() + view.addSubview(emailLabel) view.addSubview(emailSendImageView) view.addSubview(emailTextField2) @@ -466,6 +501,7 @@ class FindPassWordController: UIViewController { view.addSubview(codeSendImageView) view.addSubview(codeTextField) view.addSubview(codeConfirmLabel) + view.addSubview(codeSuccessLabel) view.addSubview(passwordLabel) @@ -550,6 +586,12 @@ class FindPassWordController: UIViewController { $0.left.equalTo(codeSendImageView.snp.left) } + // MARK: 인증번호가 다르다는 메세지를 띄움 + self.codeSuccessLabel.snp.makeConstraints{ + $0.top.equalTo(codeSendImageView.snp.bottom).offset(5) + $0.left.equalTo(codeSendImageView.snp.left) + } + // MARK: 비밀번호 변경 파트 self.passwordLabel.snp.makeConstraints{ diff --git a/LGHTSG/LGHTSG/Controller/Authentication/LoginController.swift b/LGHTSG/LGHTSG/Controller/Authentication/LoginController.swift index 610c200..86cc68b 100644 --- a/LGHTSG/LGHTSG/Controller/Authentication/LoginController.swift +++ b/LGHTSG/LGHTSG/Controller/Authentication/LoginController.swift @@ -14,11 +14,9 @@ import Alamofire class LoginController: UIViewController { - - let titleImageView2: UIImageView = { let image = UIImageView() - image.image = UIImage(named: "icon") + image.image = UIImage(named: "lghtsg-hg") image.translatesAutoresizingMaskIntoConstraints = false return image }() @@ -159,20 +157,29 @@ class LoginController: UIViewController { login.requestLoginDataModel(bodyData: bodyData){ data in - self.jwt = data.accessToken + + // MARK: main탭에 들어가기 위해 토큰 저장 UserDefaults.standard.set(data.accessToken,forKey: "savedToken") + UserDefaults.standard.set(true, forKey: "loginSuccess") + + // MARK: 패스워드 변경을 위한 저장 UserDefaults.standard.set(password,forKey: "pastPassword") + + //self.loginWrongheight.isActive = true let vc = MainTabController() vc.modalPresentationStyle = .fullScreen self.present(vc, animated: true) } + // MARK: 자동로그인을 위한 메일과 패스워드 저장 + UserDefaults.standard.set(email, forKey: "email") + UserDefaults.standard.set(password, forKey: "password") - var jwt : String = UserDefaults.standard.string(forKey: "savedToken") ?? "" - print("토큰은 \(jwt)") + let isTrue = UserDefaults.standard.bool(forKey: "loginSuccess") + print(isTrue) - - if jwt == "" { + + if isTrue == false { print("로그인안됨") loginWrongheight.isActive = false } @@ -212,20 +219,27 @@ class LoginController: UIViewController { view.addSubview(memberInquiryLabel) - // MARK: 맨 위 이미지 위치 - self.titleImageView2.snp.makeConstraints { - $0.top.equalToSuperview().offset(170) - $0.centerX.equalToSuperview() - } + UserDefaults.standard.set(false,forKey: "loginSuccess") + + self.emailImageView.snp.makeConstraints { - $0.top.equalTo(titleImageView2.snp.bottom).offset(100) + $0.top.equalToSuperview().offset(350) $0.left.equalToSuperview().offset(30) $0.right.equalToSuperview().offset(-30) } + // MARK: 맨 위 이미지 위치 + self.titleImageView2.snp.makeConstraints { + $0.top.equalToSuperview().offset(200) + $0.centerX.equalToSuperview() + $0.bottom.equalTo(emailImageView.snp.top).offset(-30) + $0.left.equalToSuperview().offset(90) + $0.right.equalToSuperview().offset(-90) + } + self.emailTextField.snp.makeConstraints { - $0.top.equalTo(titleImageView2.snp.bottom).offset(115) + $0.top.equalToSuperview().offset(365) $0.left.equalToSuperview().offset(50) $0.right.equalToSuperview().offset(-30) } @@ -255,7 +269,7 @@ class LoginController: UIViewController { // MARK: 로그인 버튼 self.loginBtn2.snp.makeConstraints { - $0.top.equalTo(pwImageView.snp.bottom).offset(40) + $0.top.equalTo(pwImageView.snp.bottom).offset(20) $0.left.equalToSuperview().offset(30) $0.right.equalToSuperview().offset(-30) } @@ -263,32 +277,33 @@ class LoginController: UIViewController { // MARK: 회원가입 및 비밀번호 찾기 self.middleLabel2.snp.makeConstraints{ - $0.top.equalTo(loginBtn2.snp.bottom).offset(25) + $0.top.equalTo(loginBtn2.snp.bottom).offset(15) $0.centerX.equalTo(loginBtn2) } self.joinBtn2.snp.makeConstraints{ - $0.top.equalTo(loginBtn2.snp.bottom).offset(20) + $0.top.equalTo(loginBtn2.snp.bottom).offset(10) $0.right.equalTo(middleLabel2.snp.left).offset(-20) } self.findPwBtn2.snp.makeConstraints{ - $0.top.equalTo(loginBtn2.snp.bottom).offset(20) + $0.top.equalTo(loginBtn2.snp.bottom).offset(10) $0.left.equalTo(middleLabel2.snp.right).offset(20) } - // MARK: 맨 밑 글자 위치 - self.memberInquiryLabel.snp.makeConstraints{ + + + self.privacyPolicyLabel.snp.makeConstraints{ $0.centerX.equalToSuperview() - $0.top.equalTo(privacyPolicyLabel.snp.bottom).offset(5) + $0.top.equalTo(findPwBtn2.snp.bottom).offset(50) } - self.privacyPolicyLabel.snp.makeConstraints{ + // MARK: 맨 밑 글자 위치 + self.memberInquiryLabel.snp.makeConstraints{ $0.centerX.equalToSuperview() - $0.bottom.equalToSuperview().offset(-100) - + $0.top.equalTo(privacyPolicyLabel.snp.bottom).offset(5) } } diff --git a/LGHTSG/LGHTSG/Controller/Authentication/RegisterationController.swift b/LGHTSG/LGHTSG/Controller/Authentication/RegisterationController.swift index 35412f9..7b7b52d 100644 --- a/LGHTSG/LGHTSG/Controller/Authentication/RegisterationController.swift +++ b/LGHTSG/LGHTSG/Controller/Authentication/RegisterationController.swift @@ -19,6 +19,35 @@ class RegisterationController: UIViewController { return navigationBar }() + let registerLabel : UILabel = { + let label = UILabel() + label.text = "똑똑한 투자를 시작해보세요!" + label.textColor = .systemBlue + label.font = UIFont(name: "NanumSquareEB", size: 20.0) + label.translatesAutoresizingMaskIntoConstraints = false + return label + }() + + + let registerLabel2 : UILabel = { + let label = UILabel() + label.text = ", 저희와 함께" + label.textColor = .white + label.font = UIFont(name: "NanumSquareEB", size: 20.0) + label.translatesAutoresizingMaskIntoConstraints = false + return label + }() + + let iconImageView : UIImageView = { + let image = UIImageView() + image.image = UIImage(named: "icon") + image.translatesAutoresizingMaskIntoConstraints = false + image.translatesAutoresizingMaskIntoConstraints = false + return image + }() + + + var profileImageData : String! // MARK: imagePicker var profileImagePicker = UIImagePickerController() @@ -72,6 +101,15 @@ class RegisterationController: UIViewController { return btn }() + let codeSuccessLabel: UILabel = { + let label = UILabel() + label.text = "⎷ 이메일 인증이 완료되었습니다." + label.font = UIFont(name: "NanumSquareR", size: 12.0) + label.textColor = .systemGreen + label.translatesAutoresizingMaskIntoConstraints = false + return label + }() + // MARK: 인증번호 발송 메세지 let codeSendLabel2: UILabel = { @@ -93,7 +131,6 @@ class RegisterationController: UIViewController { label.font = UIFont(name: "NanumSquareB", size: 15.0) label.borderStyle = .none label.enablesReturnKeyAutomatically = true - label.keyboardType = .numberPad return label }() @@ -248,6 +285,8 @@ class RegisterationController: UIViewController { codeConfirmheight2.isActive = true emailSuccess = "1" UserDefaults.standard.set(true, forKey: "ConfirmSuccess") + codeConfirmSuccessheight.isActive = false + codeConfirmheight2.isActive = true } else { codeConfirmheight2.isActive = false @@ -327,6 +366,8 @@ class RegisterationController: UIViewController { // MARK: 인증번호 관련 동적 변화 라벨 var sendCodeheight2: NSLayoutConstraint! var codeConfirmheight2: NSLayoutConstraint! + var codeConfirmSuccessheight: NSLayoutConstraint! + // MARK: 비밀번호에 따른 메세지 var pwheight3: NSLayoutConstraint! @@ -345,6 +386,9 @@ class RegisterationController: UIViewController { pwheight4 = pwSameLabel2.heightAnchor.constraint(equalToConstant: 0) pwheight4.isActive = true + + codeConfirmSuccessheight = codeSuccessLabel.heightAnchor.constraint(equalToConstant: 0) + codeConfirmSuccessheight.isActive = true } @@ -418,7 +462,7 @@ class RegisterationController: UIViewController { "email" : email, "password" : password, "emailCheck" : emailCheck, - "profileImg" : profileImg + //"profileImg" : profileImg ] joinAccess.requestJoinDataModel(bodyData: bodyData){ data in @@ -455,7 +499,10 @@ class RegisterationController: UIViewController { heightSetting2() view.backgroundColor = .black - view.addSubview(profileImageView) + view.addSubview(iconImageView) + view.addSubview(registerLabel) + view.addSubview(registerLabel2) + //view.addSubview(profileImageView) view.addSubview(nameImageView) view.addSubview(nameTextField) @@ -468,6 +515,7 @@ class RegisterationController: UIViewController { view.addSubview(codeTextField2) view.addSubview(codeConfirmBtn2) view.addSubview(codeConfirmLabel2) + view.addSubview(codeSuccessLabel) view.addSubview(pwImageView2) @@ -483,16 +531,34 @@ class RegisterationController: UIViewController { view.addSubview(nextBtn) + // MARK: 이름 설정 위치 + self.iconImageView.snp.makeConstraints{ + $0.top.equalToSuperview().offset(80) + $0.left.equalToSuperview().offset(20) + } + + self.registerLabel2.snp.makeConstraints{ + $0.top.equalToSuperview().offset(80) + $0.left.equalTo(iconImageView.snp.right).offset(5) + } + + // MARK: 이름 설정 위치 + self.registerLabel.snp.makeConstraints{ + $0.top.equalTo(iconImageView.snp.bottom).offset(20) + $0.left.equalToSuperview().offset(20) + $0.right.equalToSuperview().offset(-20) + } + // MARK: 이름 설정 위치 self.nameImageView.snp.makeConstraints{ - $0.top.equalToSuperview().offset(240) + $0.top.equalToSuperview().offset(200) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) } self.nameTextField.snp.makeConstraints{ - $0.top.equalToSuperview().offset(255) + $0.top.equalToSuperview().offset(215) $0.left.equalToSuperview().offset(30) $0.right.equalToSuperview().offset(-20) } @@ -548,6 +614,11 @@ class RegisterationController: UIViewController { $0.left.equalTo(codeSendImageView2.snp.left) } + self.codeSuccessLabel.snp.makeConstraints{ + $0.top.equalTo(codeSendImageView2.snp.bottom).offset(5) + $0.left.equalTo(codeSendImageView2.snp.left) + } + // MARK: 비밀번호 설정 위치 self.pwImageView2.snp.makeConstraints{ @@ -592,14 +663,14 @@ class RegisterationController: UIViewController { } self.nextBtn.snp.makeConstraints{ - $0.top.equalTo(nextBtnImageView).offset(10) + $0.top.equalTo(nextBtnImageView.snp.top).offset(10) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) + } - - + /* let tap = UITapGestureRecognizer(target: self, action: #selector(changeProfile)) profileImageView.addGestureRecognizer(tap) @@ -618,7 +689,7 @@ class RegisterationController: UIViewController { make.width.equalTo(100) } - + */ // MARK: 키보드 올라갔을 때 화면 터치해서 내려가게함 @@ -654,7 +725,7 @@ class RegisterationController: UIViewController { nextBtn.addTarget(self, action: #selector(joinBtnClicked2), for: .touchUpInside) } - } + } diff --git a/LGHTSG/LGHTSG/Controller/Authentication/RegisterationSuccessController.swift b/LGHTSG/LGHTSG/Controller/Authentication/RegisterationSuccessController.swift index 46ac86b..3f684fc 100644 --- a/LGHTSG/LGHTSG/Controller/Authentication/RegisterationSuccessController.swift +++ b/LGHTSG/LGHTSG/Controller/Authentication/RegisterationSuccessController.swift @@ -24,8 +24,25 @@ class RegisterationSuccessController: UIViewController { @objc func MoveHomeTab(){ - let vc = LoginController() - vc.modalPresentationStyle = .fullScreen - self.present(vc, animated: true) + + + //Alert 선언 + let msg = UIAlertController(title: "", message: "회원가입이 완료되었습니다.\n앱을 다시 실행하여 시작해보세요 :)", preferredStyle: .alert) + //Alert에 부여할 Yes이벤트 선언 + let YES = UIAlertAction(title: "확인", style: .default, handler: { (action) -> Void in + self.YesClick2() + }) + + // MARK: 자동로그인을 못하게 막는다 + UserDefaults.standard.set(false, forKey: "loginSuccess") + + msg.addAction(YES) + self.present(msg, animated: true, completion: nil) + } + + @objc func YesClick2(){ + UIApplication.shared.perform(#selector(NSXPCConnection.suspend)) + DispatchQueue.main.asyncAfter(deadline: .now()+0.5) {exit(0) + } } } diff --git a/LGHTSG/LGHTSG/Controller/CheckController/CheckAgreeController.swift b/LGHTSG/LGHTSG/Controller/CheckController/CheckAgreeController.swift index 17da51f..8f021ae 100644 --- a/LGHTSG/LGHTSG/Controller/CheckController/CheckAgreeController.swift +++ b/LGHTSG/LGHTSG/Controller/CheckController/CheckAgreeController.swift @@ -8,17 +8,17 @@ import UIKit class CheckAgreeController: UIViewController { - + + + + override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .black let CheckAgreeView = CheckAgreeView() view.addSubview(CheckAgreeView) - UserDefaults.standard.set(false, forKey: "allcheck") - UserDefaults.standard.set(false, forKey: "check1") - UserDefaults.standard.set(false, forKey: "check2") - UserDefaults.standard.set(false, forKey: "check3") + CheckAgreeView.translatesAutoresizingMaskIntoConstraints = false CheckAgreeView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true @@ -89,9 +89,13 @@ class CheckAgreeController: UIViewController { var isCheck4 = Int(isChecked4) if allChecked == 1{ + let vc = RegisterationController() + vc.modalPresentationStyle = .overFullScreen self.present(RegisterationController(), animated: true) } else if isCheck2 == 1 && isCheck3 == 1 && isCheck4 == 1{ + let vc = RegisterationController() + vc.modalPresentationStyle = .overFullScreen self.present(RegisterationController(), animated: true) } else{ diff --git a/LGHTSG/LGHTSG/Controller/CheckController/CheckPageMarketingController.swift b/LGHTSG/LGHTSG/Controller/CheckController/CheckPageMarketingController.swift index 5e46019..0fb6fb6 100644 --- a/LGHTSG/LGHTSG/Controller/CheckController/CheckPageMarketingController.swift +++ b/LGHTSG/LGHTSG/Controller/CheckController/CheckPageMarketingController.swift @@ -46,6 +46,7 @@ class CheckPageMarketingController: UIViewController { } @objc func tapDismissButton(){ + UserDefaults.standard.set(true, forKey: "check1") self.presentingViewController?.dismiss(animated: true) } diff --git a/LGHTSG/LGHTSG/Controller/CheckController/CheckPagePrivacyController.swift b/LGHTSG/LGHTSG/Controller/CheckController/CheckPagePrivacyController.swift index b8b9a31..41f1b81 100644 --- a/LGHTSG/LGHTSG/Controller/CheckController/CheckPagePrivacyController.swift +++ b/LGHTSG/LGHTSG/Controller/CheckController/CheckPagePrivacyController.swift @@ -46,6 +46,7 @@ class CheckPagePrivacyController: UIViewController { } @objc func tapDismissButton(){ + UserDefaults.standard.set(true, forKey: "check3") self.presentingViewController?.dismiss(animated: true) } diff --git a/LGHTSG/LGHTSG/Controller/CheckController/CheckPageServiceController.swift b/LGHTSG/LGHTSG/Controller/CheckController/CheckPageServiceController.swift index e626d81..9aeef00 100644 --- a/LGHTSG/LGHTSG/Controller/CheckController/CheckPageServiceController.swift +++ b/LGHTSG/LGHTSG/Controller/CheckController/CheckPageServiceController.swift @@ -46,6 +46,7 @@ class CheckPageServiceController: UIViewController { } @objc func tapDismissButton(){ + UserDefaults.standard.set(true, forKey: "check2") self.presentingViewController?.dismiss(animated: true) } diff --git a/LGHTSG/LGHTSG/Controller/EstateChartViewController.swift b/LGHTSG/LGHTSG/Controller/EstateChartViewController.swift index 450d88c..664fa44 100644 --- a/LGHTSG/LGHTSG/Controller/EstateChartViewController.swift +++ b/LGHTSG/LGHTSG/Controller/EstateChartViewController.swift @@ -31,38 +31,39 @@ class EstateChartViewController : UIViewController { dateFormatter.dateFormat = "yyyy-MM-dd" return dateFormatter }() + lazy var lineChartView : LineChartView = { let chartView = LineChartView() return chartView }() private lazy var nameLabel : UILabel = { let label = UILabel() - label.font = .systemFont(ofSize: 17, weight: .semibold) + label.font = UIFont(name: "NanumSquareEB", size: 17.0) label.textColor = UIColor.white label.text = nameText return label }() private lazy var priceLabel : UILabel = { let label = UILabel() - label.font = .systemFont(ofSize: 14, weight: .medium) + label.font = UIFont(name: "NanumSquareB", size: 14.0) label.textColor = UIColor.systemGray return label }() private lazy var pricePercent : UILabel = { let label = UILabel() - label.font = .systemFont(ofSize: 12, weight: .medium) + label.font = UIFont(name: "NanumSquareEB", size: 12.0) label.text = pricePercentText if (label.text!.prefix(1) == "-"){ - label.textColor = UIColor.blue + label.textColor = UIColor.systemBlue }else{ - label.textColor = UIColor.red + label.textColor = UIColor.systemRed } return label }() private lazy var changeDate : UILabel = { let label = UILabel() - label.font = .systemFont(ofSize: 12, weight : .medium) + label.font = UIFont(name: "NanumSquareB", size: 12.0) label.textColor = UIColor.systemGray label.text = changeDateText return label @@ -71,15 +72,15 @@ class EstateChartViewController : UIViewController { private lazy var dealLabel: UILabel = { let label = UILabel() label.text = "거래 이력" - label.font = UIFont.systemFont(ofSize: 12, weight: .light) + label.font = UIFont(name: "NanumSquareEB", size: 14.0) label.textColor = .white return label }() private lazy var revenueLabel: UILabel = { let label = UILabel() - label.textColor = .white - label.font = UIFont.systemFont(ofSize: 16, weight: .bold) + label.textColor = .systemBlue + label.font = UIFont(name: "NanumSquareEB", size: 16.0) return label }() @@ -98,14 +99,14 @@ class EstateChartViewController : UIViewController { seg.setTitleTextAttributes( [ NSAttributedString.Key.foregroundColor: UIColor.white, - .font: UIFont.systemFont(ofSize: 14, weight: .semibold) + .font: UIFont(name: "NanumSquareEB", size: 14) ], for: .selected ) seg.setTitleTextAttributes( [ NSAttributedString.Key.foregroundColor: UIColor.systemGray, - .font: UIFont.systemFont(ofSize: 14, weight: .semibold) + .font: UIFont(name: "NanumSquareEB", size: 14) ], for: .normal ) @@ -118,28 +119,31 @@ class EstateChartViewController : UIViewController { let btn = UIButton() var config = UIButton.Configuration.filled() config.attributedTitle = "원하시는 구매시점을 클릭해주세요" + config.attributedTitle?.font = UIFont(name: "NanumSquareEB", size: 14) btn.configuration = config btn.layer.cornerRadius = 10 - btn.backgroundColor = .blue - btn.tintColor = .blue - btn.layer.borderWidth = 1 + btn.backgroundColor = .systemBlue + btn.tintColor = .systemBlue btn.addTarget(self, action: #selector(sellbtnclicked), for: .touchUpInside) return btn }() - //MARK: - ButtonCustom + + + + //MARK: - ButtonCustom private func setSellButton(){ if(sellMode == true){ var config = UIButton.Configuration.plain() config.titleAlignment = .center if let markerDate = self.markerDate { var titleAttribute = AttributeContainer() - titleAttribute.font = .systemFont(ofSize: 10, weight: .medium) + titleAttribute.font = UIFont(name: "NanumSquareB", size: 10.0) config.attributedTitle = AttributedString(markerDate, attributes: titleAttribute) config.titlePadding = 3.0 } var subtitleAttribute = AttributeContainer() - subtitleAttribute.font = .systemFont(ofSize: 15, weight: .bold) + subtitleAttribute.font = UIFont(name: "NanumSquareEB", size: 15.0) config.attributedSubtitle = AttributedString("판매", attributes: subtitleAttribute) self.sellButton.configuration = config self.sellButton.backgroundColor = .white @@ -149,18 +153,20 @@ class EstateChartViewController : UIViewController { config.titleAlignment = .center if let markerDate = self.markerDate { var titleAttribute = AttributeContainer() - titleAttribute.font = .systemFont(ofSize: 10, weight: .medium) + titleAttribute.font = UIFont(name: "NanumSquareB", size: 10.0) config.attributedTitle = AttributedString(markerDate, attributes: titleAttribute) config.titlePadding = 3.0 } var subtitleAttribute = AttributeContainer() - subtitleAttribute.font = .systemFont(ofSize: 15, weight: .bold) + subtitleAttribute.font = UIFont(name: "NanumSquareEB", size: 15.0) subtitleAttribute.backgroundColor = .white config.attributedSubtitle = AttributedString("구매", attributes: subtitleAttribute) self.sellButton.configuration = config - self.sellButton.backgroundColor = .blue + self.sellButton.backgroundColor = .systemBlue } } + + //MARK: - MarkerDatachange @objc func markerchange(_ notification : Notification){ if let getValue = notification.userInfo as? [String : Int]{ @@ -203,6 +209,15 @@ class EstateChartViewController : UIViewController { self.tradeListData = data.body! //현재 가지고 있는 경우 if(data.body!.last?.sellCheck == 0){ + + let subData = Double( self.priceListDatas.last! - data.body!.last!.price ) / Double(data.body!.last!.price) * 100 + if subData > 0 { + self.revenueLabel.textColor = .systemBlue + } + else { + self.revenueLabel.textColor = .systemRed + } + self.revenueLabel.text = "구매시점에 비해서 \(String(format: "%.2f", Double(( self.priceListDatas.last! - data.body!.last!.price )) / Double(data.body!.last!.price) * 100))% " self.sellMode = true }else{ @@ -231,10 +246,10 @@ class EstateChartViewController : UIViewController { temppriceListDatas = daypricedata pricePercent.text = "\(String(format: "%.2f", Double((temppriceListDatas.last! - temppriceListDatas[0])) / Double(temppriceListDatas[0]) * 100))%" if(pricePercent.text?.prefix(1) == "-"){ - pricePercent.textColor = UIColor.blue + pricePercent.textColor = UIColor.systemBlue } else{ - pricePercent.textColor = UIColor.red + pricePercent.textColor = UIColor.systemRed } tableView.reloadData() case 1: @@ -246,10 +261,10 @@ class EstateChartViewController : UIViewController { temppriceListDatas = daypricedata pricePercent.text = "\(String(format: "%.2f", Double((temppriceListDatas.last! - temppriceListDatas[0])) / Double(temppriceListDatas[0]) * 100))%" if(pricePercent.text?.prefix(1) == "-"){ - pricePercent.textColor = UIColor.blue + pricePercent.textColor = UIColor.systemBlue } else{ - pricePercent.textColor = UIColor.red + pricePercent.textColor = UIColor.systemRed } tableView.reloadData() case 2: @@ -261,10 +276,10 @@ class EstateChartViewController : UIViewController { temppriceListDatas = daypricedata pricePercent.text = "\(String(format: "%.2f", Double((temppriceListDatas.last! - temppriceListDatas[0])) / Double(temppriceListDatas[0]) * 100))%" if(pricePercent.text?.prefix(1) == "-"){ - pricePercent.textColor = UIColor.blue + pricePercent.textColor = UIColor.systemBlue } else{ - pricePercent.textColor = UIColor.red + pricePercent.textColor = UIColor.systemRed } tableView.reloadData() case 3: @@ -272,10 +287,10 @@ class EstateChartViewController : UIViewController { self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: priceListDatas), xAxis: timeListDatas, recentPrice : Double(priceListDatas.last!)) pricePercent.text = "\(String(format: "%.2f", Double((priceListDatas.last! - priceListDatas[0])) / Double(priceListDatas[0]) * 100))%" if(pricePercent.text?.prefix(1) == "-"){ - pricePercent.textColor = UIColor.blue + pricePercent.textColor = UIColor.systemBlue } else{ - pricePercent.textColor = UIColor.red + pricePercent.textColor = UIColor.systemRed } tableView.reloadData() default: @@ -284,47 +299,60 @@ class EstateChartViewController : UIViewController { } //MARK: - btnclickevent @objc func sellbtnclicked(){ - let trademodel = StocktradeModel() - if(sellMode == true){ - trademodel.requestSellstock(assetIdx: self.idx!, category: "realestate", price: self.markerPrice!, transactionTime: self.markerDate!, token: mytoken!){ - data in - if(data.header.resultCode == 4009){ - let alertv = UIAlertController(title: "Error", message: "판매하려는 시기 이후에 구매하였습니다.", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true) - } - else if (data.header.resultCode == 4006){ - let alertv = UIAlertController(title: "Error", message: "이미 판매를 한 상품입니다.", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true) - } - else{ - let alertv = UIAlertController(title: "판매완료", message: "판매가 완료되었습니다", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true){ - self.getTradeLists() - self.tableView.reloadData() - } - }} - }else{ - //구매하기 - trademodel.requestBuystock(assetIdx: self.idx!, category: "realestate", price: self.markerPrice!, transactionTime: self.markerDate!, token: mytoken!) { - data in - if(data.header.resultCode == 4005){ - let alertv = UIAlertController(title: "Error", message: "이미 구매를 한 상품입니다.", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true) - } - else if(data.header.resultCode == 1000){ - let alertv = UIAlertController(title: "구매완료 ", message: "구매가 완료되었습니다", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true) - self.getTradeLists() - self.tableView.reloadData() - } - } - } - } + let trademodel = StocktradeModel() + if let markerDate = self.markerDate { + if(sellMode == true){ + trademodel.requestSellstock(assetIdx: self.idx!, category: "realestate", price: self.markerPrice!, transactionTime: markerDate, token: mytoken!){ + data in + if(data.header.resultCode == 4009){ + let alertv = UIAlertController(title: "Error", message: "판매하려는 시기 이후에 구매하였습니다.", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + } + else if (data.header.resultCode == 4006){ + let alertv = UIAlertController(title: "Error", message: "이미 판매를 한 상품입니다.", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + } + else if(data.header.resultCode == 1000){ + let alertv = UIAlertController(title: "판매완료", message: "판매가 완료되었습니다", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true){ + self.getTradeLists() + self.tableView.reloadData() + } + } + else{ + let alertv = UIAlertController(title: "Error", message: "판매가 되지 않았습니다.", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + } + } + }else{ + //구매하기 + trademodel.requestBuystock(assetIdx: self.idx!, category: "realestate", price: self.markerPrice!, transactionTime: markerDate, token: mytoken!) { + data in + if(data.header.resultCode == 4005){ + let alertv = UIAlertController(title: "Error", message: "이미 구매를 한 상품입니다.", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + } + else if(data.header.resultCode == 1000){ + let alertv = UIAlertController(title: "구매완료 ", message: "구매가 완료되었습니다", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + self.getTradeLists() + self.tableView.reloadData() + } + else if(data.header.resultCode == 4208){ + let alertv = UIAlertController(title: "구매실패", message: "동일 자산을 2번 이상 구매하였습니다.", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + } + } + } + } + } } extension EstateChartViewController : UITableViewDelegate, UITableViewDataSource { //cell 높이조절 @@ -338,17 +366,24 @@ class EstateChartViewController : UIViewController { guard let cell = tableView.dequeueReusableCell(withIdentifier: EstateDetailCell.identifier, for: indexPath) as? EstateDetailCell else { return UITableViewCell() } cell.selectionStyle = .none + + cell.date.font = UIFont(name: "NanumSquareEB", size: 13) + cell.price.font = UIFont(name: "NanumSquareEB", size: 13) + cell.buysell.font = UIFont(name: "NanumSquareEB", size: 13) + + cell.date.text = tradeListData[indexPath.row].transactionTime cell.date.textColor = .white cell.price.text = "\(tradeListData[indexPath.row].price)원" cell.price.textColor = .white if(tradeListData[indexPath.row].sellCheck == 0 ){ cell.buysell.text = "구매" + cell.buysell.textColor = .systemRed } else if(tradeListData[indexPath.row].sellCheck == 1){ cell.buysell.text = "판매" + cell.buysell.textColor = .systemBlue } - cell.buysell.textColor = .white return cell } } @@ -358,7 +393,7 @@ class EstateChartViewController : UIViewController { let lineChartdataSet = LineChartDataSet(entries: lineChartDataEntries, label: "주가") lineChartdataSet.drawValuesEnabled = false lineChartdataSet.drawCirclesEnabled = false - lineChartdataSet.colors = [.blue] + lineChartdataSet.colors = [.systemBlue] //선택했을때 라인 지워주기 lineChartdataSet.drawHorizontalHighlightIndicatorEnabled = false // lineChartdataSet.drawVerticalHighlightIndicatorEnabled = false diff --git a/LGHTSG/LGHTSG/Controller/ExploreViewController.swift b/LGHTSG/LGHTSG/Controller/ExploreViewController.swift index bfd1a28..5787d74 100644 --- a/LGHTSG/LGHTSG/Controller/ExploreViewController.swift +++ b/LGHTSG/LGHTSG/Controller/ExploreViewController.swift @@ -12,21 +12,26 @@ protocol searchDataFilterDelegate{ } class ExploreViewController : UIViewController { var delegate1 : searchDataFilterDelegate? - var segmentControl = UnderlineSegmentedControl(items: ["Top", "부동산", "주식", "리셀"]) + var segmentControl = UnderlineSegmentedControl(items: ["Rank","Top", "부동산", "주식", "리셀"]) let underline1 = UnderlineView() let underline2 = UnderlineView() let underline3 = UnderlineView() + let underline5 = UnderlineView() let underline4 = UnderlineView() - private var changepercent : String? + private var changepercent = "0%" var resellVC = resellView() static var isSearching = false let stockView = StockView() let TopView = TopViewController() let EstateVC = EstateController() + let rankVC = RankViewController() + private var mytoken = UserDefaults.standard.string(forKey: "savedToken") override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .black + + let userRoemodel = UserRoeModel() userRoemodel.getUserROE(token: mytoken!){ @@ -36,19 +41,28 @@ class ExploreViewController : UIViewController { } stockView.delegate = self setTobTabbar() - self.addChild(TopView) - self.view.addSubview(TopView.view) - TopView.view.snp.makeConstraints{ + + self.addChild(rankVC) + self.view.addSubview(rankVC.view) + rankVC.view.snp.makeConstraints{ $0.leading.trailing.equalToSuperview().inset(23) $0.top.equalTo(underline4.snp.bottom).offset(32) $0.bottom.equalTo(view.safeAreaLayoutGuide) } +// self.addChild(TopView) +// self.view.addSubview(TopView.view) +// TopView.view.snp.makeConstraints{ +// $0.leading.trailing.equalToSuperview().inset(23) +// $0.top.equalTo(underline4.snp.bottom).offset(32) +// $0.bottom.equalTo(view.safeAreaLayoutGuide) +// } } //keyboard override func touchesBegan(_ touches: Set, with event: UIEvent?) { view.endEditing(true) } + override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(true) let userRoemodel = UserRoeModel() @@ -64,6 +78,22 @@ class ExploreViewController : UIViewController { view.addSubview(underline2) view.addSubview(underline3) view.addSubview(underline4) + view.addSubview(underline5) + + // MARK: 세그먼트 폰트 설정 + // 선택안된 버튼 폰트 + segmentControl.setTitleTextAttributes([ + NSAttributedString.Key.foregroundColor: UIColor.systemGray, + NSAttributedString.Key.font: UIFont(name: "NanumSquareEB", size: 17) + ], for: .normal) + + // 선택된 버튼 폰트 + segmentControl.setTitleTextAttributes([ + NSAttributedString.Key.foregroundColor: UIColor.white, + NSAttributedString.Key.font: UIFont(name: "NanumSquareEB", size: 17) + ], for: .selected) + + segmentControl.addTarget(self, action: #selector(clickfoursegment), for: .valueChanged) segmentControl.snp.makeConstraints{ $0.top.equalTo(view.safeAreaLayoutGuide.snp.top) @@ -74,25 +104,31 @@ class ExploreViewController : UIViewController { underline1.snp.makeConstraints{ $0.leading.equalToSuperview().inset(18) $0.height.equalTo(1) - $0.width.equalTo((view.frame.width - 36 - 12.5) / 4) + $0.width.equalTo((view.frame.width - 36 - 12.5) / 5) $0.top.equalTo(segmentControl.snp.bottom).offset(-8) } underline2.snp.makeConstraints{ $0.leading.equalTo(underline1.snp.trailing).offset(4.5) $0.height.equalTo(1) - $0.width.equalTo((view.frame.width - 36 - 12.5) / 4) + $0.width.equalTo((view.frame.width - 36 - 12.5) / 5) $0.top.equalTo(segmentControl.snp.bottom).offset(-8) } underline3.snp.makeConstraints{ $0.leading.equalTo(underline2.snp.trailing).offset(3.5) $0.height.equalTo(1) - $0.width.equalTo((view.frame.width - 36 - 12.5) / 4) + $0.width.equalTo((view.frame.width - 36 - 12.5) / 5) $0.top.equalTo(segmentControl.snp.bottom).offset(-8) } underline4.snp.makeConstraints{ $0.leading.equalTo(underline3.snp.trailing).offset(4.5) $0.height.equalTo(1) - $0.width.equalTo((view.frame.width - 36 - 12.5) / 4) + $0.width.equalTo((view.frame.width - 36 - 12.5) / 5) + $0.top.equalTo(segmentControl.snp.bottom).offset(-8) + } + underline5.snp.makeConstraints{ + $0.leading.equalTo(underline4.snp.trailing).offset(4.5) + $0.height.equalTo(1) + $0.width.equalTo((view.frame.width - 36 - 12.5) / 5) $0.top.equalTo(segmentControl.snp.bottom).offset(-8) } } @@ -105,10 +141,35 @@ class ExploreViewController : UIViewController { resellVC.view.removeFromSuperview() EstateVC.removeFromParent() EstateVC.view.removeFromSuperview() + TopView.view.removeFromSuperview() + TopView.removeFromParent() underline1.backgroundColor = .white underline2.backgroundColor = .darkGray underline3.backgroundColor = .darkGray underline4.backgroundColor = .darkGray + underline5.backgroundColor = .darkGray + self.addChild(rankVC) + self.view.addSubview(rankVC.view) + rankVC.view.snp.makeConstraints{ + $0.leading.trailing.equalToSuperview().inset(23) + $0.top.equalTo(underline4.snp.bottom).offset(32) + $0.bottom.equalTo(view.safeAreaLayoutGuide) + } + + case 1: + rankVC.removeFromParent() + rankVC.view.removeFromSuperview() + stockView.removeFromParent() + stockView.view.removeFromSuperview() + resellVC.removeFromParent() + resellVC.view.removeFromSuperview() + EstateVC.removeFromParent() + EstateVC.view.removeFromSuperview() + underline1.backgroundColor = .darkGray + underline2.backgroundColor = .white + underline3.backgroundColor = .darkGray + underline4.backgroundColor = .darkGray + underline5.backgroundColor = .darkGray self.addChild(TopView) self.view.addSubview(TopView.view) TopView.view.snp.makeConstraints{ @@ -116,8 +177,12 @@ class ExploreViewController : UIViewController { $0.top.equalTo(underline4.snp.bottom).offset(32) $0.bottom.equalTo(view.safeAreaLayoutGuide) } + + - case 1: + case 2: + rankVC.removeFromParent() + rankVC.view.removeFromSuperview() stockView.removeFromParent() stockView.view.removeFromSuperview() resellVC.removeFromParent() @@ -132,12 +197,16 @@ class ExploreViewController : UIViewController { $0.bottom.equalTo(view.safeAreaLayoutGuide) } underline1.backgroundColor = .darkGray - underline2.backgroundColor = .white - underline3.backgroundColor = .darkGray + underline2.backgroundColor = .darkGray + underline3.backgroundColor = .white underline4.backgroundColor = .darkGray + underline5.backgroundColor = .darkGray + - - case 2: + + case 3: + rankVC.removeFromParent() + rankVC.view.removeFromSuperview() TopView.removeFromParent() TopView.view.removeFromSuperview() EstateVC.removeFromParent() @@ -146,8 +215,8 @@ class ExploreViewController : UIViewController { resellVC.view.removeFromSuperview() underline1.backgroundColor = .darkGray underline2.backgroundColor = .darkGray - underline3.backgroundColor = .white - underline4.backgroundColor = .darkGray + underline3.backgroundColor = .darkGray + underline4.backgroundColor = .white self.addChild(stockView) self.view.addSubview(stockView.view) stockView.view.snp.makeConstraints{ @@ -155,9 +224,11 @@ class ExploreViewController : UIViewController { $0.top.equalTo(underline4.snp.bottom).offset(32) $0.bottom.equalTo(view.safeAreaLayoutGuide) } - - - case 3: + underline5.backgroundColor = .darkGray + + case 4: + rankVC.removeFromParent() + rankVC.view.removeFromSuperview() TopView.removeFromParent() TopView.view.removeFromSuperview() stockView.removeFromParent() @@ -167,9 +238,8 @@ class ExploreViewController : UIViewController { underline1.backgroundColor = .darkGray underline2.backgroundColor = .darkGray underline3.backgroundColor = .darkGray - underline4.backgroundColor = .white - - + underline4.backgroundColor = .darkGray + underline5.backgroundColor = .white resellVC.delegate = self self.addChild(resellVC) self.view.addSubview(resellVC.view) @@ -191,23 +261,29 @@ extension ExploreViewController : showNavigationDelegate{ } func SetNavigationBar(){ ExploreViewController.isSearching = false + stockView.StockaTableView.reloadData() + resellVC.resellTableView.reloadData() + navigationItem.titleView = nil navigationController?.navigationBar.tintColor = .white let searchBtn = UIBarButtonItem(image: UIImage(systemName : "magnifyingglass"), style: .plain, target: self, action: #selector(showsearchbar)) searchBtn.tintColor = .white navigationItem.leftBarButtonItem = searchBtn var config = UIButton.Configuration.plain() - var attributeString = AttributedString(changepercent!) - attributeString.font = UIFont(name: "NanumSquareB", size: 12) + var attributeString = AttributedString(changepercent) + + attributeString.font = UIFont(name: "NanumSquareEB", size: 12) attributeString.foregroundColor = UIColor.systemBlue config.attributedTitle = attributeString config.titleAlignment = .leading - config.image = UIImage(named: "profile_mini") + config.image = UIImage(named: "profile-money-mini") config.imagePadding = 8 config.imagePlacement = .trailing + let realbtn = UIButton(configuration: config) let profileBtn = UIBarButtonItem(customView:realbtn ) realbtn.addTarget(self, action: #selector(mypageClicked), for: .touchUpInside) + navigationItem.rightBarButtonItem = profileBtn let navigationAppearance = UINavigationBarAppearance() navigationAppearance.backgroundColor = .black @@ -227,6 +303,7 @@ extension ExploreViewController : showNavigationDelegate{ let searchbar = UISearchBar() searchbar.delegate = self searchbar.placeholder = "검색어를 입력해주세요" + searchbar.searchTextField.font = UIFont(name: "NanumSquareB", size: 13) searchbar.searchTextField.backgroundColor = .clear searchbar.searchTextField.textColor = .white searchbar.tintColor = .white diff --git a/LGHTSG/LGHTSG/Controller/HomeViewController.swift b/LGHTSG/LGHTSG/Controller/HomeViewController.swift index 5b820c8..f3ef338 100644 --- a/LGHTSG/LGHTSG/Controller/HomeViewController.swift +++ b/LGHTSG/LGHTSG/Controller/HomeViewController.swift @@ -22,6 +22,7 @@ final class HomeViewController : UIViewController{ view.backgroundColor = .black super.viewDidLoad() let userRoemodel = UserRoeModel() + userRoemodel.getUserROE(token: mytoken!){ data in self.changepercent = String(format:"%.2f",data.rate)+"%" @@ -91,13 +92,13 @@ private extension HomeViewController{ searchBtn.tintColor = .white navigationItem.leftBarButtonItem = searchBtn var config = UIButton.Configuration.plain() - var attributeString = AttributedString(changepercent) - attributeString.font = UIFont(name: "NanumSquareB", size: 12) + attributeString.font = UIFont(name: "NanumSquareEB", size: 12) + attributeString.foregroundColor = UIColor.systemBlue config.attributedTitle = attributeString config.titleAlignment = .leading - config.image = UIImage(named: "profile_mini") + config.image = UIImage(named: "profile-money-mini") config.imagePadding = 8 config.imagePlacement = .trailing let realbtn = UIButton(configuration: config) @@ -176,6 +177,19 @@ extension HomeViewController : UITableViewDelegate,UITableViewDataSource { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableview.dequeueReusableCell(withIdentifier: "HomeTableCell", for: indexPath) as? HomeTableCell cell?.selectionStyle = .none + + // MARK: 세그먼트 폰트 설정 + // 선택안된 버튼 폰트 + segmentControl.setTitleTextAttributes([ + NSAttributedString.Key.foregroundColor: UIColor.systemGray, + NSAttributedString.Key.font: UIFont(name: "NanumSquareEB", size: 17) + ], for: .normal) + + // 선택된 버튼 폰트 + segmentControl.setTitleTextAttributes([ + NSAttributedString.Key.foregroundColor: UIColor.white, + NSAttributedString.Key.font: UIFont(name: "NanumSquareEB", size: 17) + ], for: .selected) let selectedIndex = self.segmentControl.selectedSegmentIndex switch selectedIndex{ @@ -214,6 +228,7 @@ extension HomeViewController : UITableViewDelegate,UITableViewDataSource { ChartVc.PriceText = "\(String(myAssetData[indexPath.row].price))원" ChartVc.idx = myAssetData[indexPath.row].assetIdx ChartVc.imageURL = myAssetData[indexPath.row].iconImage + ChartVc.navigationItem.leftBarButtonItem?.tintColor = .white self.navigationController?.pushViewController(ChartVc, animated: true) } else if (myAssetData[indexPath.row].category == "stock"){ @@ -223,8 +238,19 @@ extension HomeViewController : UITableViewDelegate,UITableViewDataSource { StockVC.pricePercentText = "\(myAssetData[indexPath.row].rateOfChange)%" // StockVC. = "\(String(myAssetData[indexPath.row].price))원" StockVC.idx = myAssetData[indexPath.row].assetIdx + StockVC.navigationItem.leftBarButtonItem?.tintColor = .white self.navigationController?.pushViewController(StockVC, animated: true) } + // 부동산일꺼아냐 + else{ + let estateChartVC = EstateChartViewController() + estateChartVC.nameText = myAssetData[indexPath.row].assetName + estateChartVC.changeDateText = myAssetData[indexPath.row].rateCalDateDiff + estateChartVC.pricePercentText = "\(myAssetData[indexPath.row].rateOfChange)%" + estateChartVC.idx = myAssetData[indexPath.row].assetIdx + estateChartVC.navigationItem.leftBarButtonItem?.tintColor = .white + self.navigationController?.pushViewController(estateChartVC, animated: true) + } case 1: if(SellAssetData[indexPath.row].category == "resell"){ let ChartVc = ReSellChartViewController() @@ -234,6 +260,7 @@ extension HomeViewController : UITableViewDelegate,UITableViewDataSource { ChartVc.PriceText = "\(String(SellAssetData[indexPath.row].price))원" ChartVc.idx = SellAssetData[indexPath.row].assetIdx ChartVc.imageURL = SellAssetData[indexPath.row].iconImage + ChartVc.navigationItem.leftBarButtonItem?.tintColor = .white self.navigationController?.pushViewController(ChartVc, animated: true) } else if (SellAssetData[indexPath.row].category == "stock"){ @@ -243,8 +270,18 @@ extension HomeViewController : UITableViewDelegate,UITableViewDataSource { StockVC.pricePercentText = "\(SellAssetData[indexPath.row].rateOfChange)%" // StockVC. = "\(String(myAssetData[indexPath.row].price))원" StockVC.idx = SellAssetData[indexPath.row].assetIdx + StockVC.navigationItem.leftBarButtonItem?.tintColor = .white self.navigationController?.pushViewController(StockVC, animated: true) } + else{ + let estateChartVC = EstateChartViewController() + estateChartVC.nameText = SellAssetData[indexPath.row].assetName + estateChartVC.changeDateText = SellAssetData[indexPath.row].rateCalDateDiff + estateChartVC.pricePercentText = "\(SellAssetData[indexPath.row].rateOfChange)%" + estateChartVC.idx = SellAssetData[indexPath.row].assetIdx + estateChartVC.navigationItem.leftBarButtonItem?.tintColor = .white + self.navigationController?.pushViewController(estateChartVC, animated: true) + } default: print("error") } } @@ -254,31 +291,50 @@ extension HomeViewController : UITableViewDelegate,UITableViewDataSource { } func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == .delete { -// tableView.beginUpdates() + // tableView.beginUpdates() let AssetModel = AssetModel() -// switch( self.segmentControl.selectedSegmentIndex){ -// case 0: - AssetModel.deleteMyAsset(token: self.mytoken!, transactionIdx: myAssetData[indexPath.row].assetIdx, category: myAssetData[indexPath.row].category){ - data in - //요청에 성공한 경우 - if(data.header.resultCode == 1000){ - let alertv = UIAlertController(title: "삭제완료", message: "삭제가 완료되었습니다", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true){ -// tableView.deleteRows(at: [indexPath], with: .fade) - self.getmyAssetData() -// tableView.endUpdates() + switch( self.segmentControl.selectedSegmentIndex){ + case 0: + AssetModel.deleteMyAsset(token: self.mytoken!, transactionIdx: myAssetData[indexPath.row].assetIdx, category: myAssetData[indexPath.row].category){ + data in + //요청에 성공한 경우 + if(data.header.resultCode == 1000){ + let alertv = UIAlertController(title: "삭제완료", message: "삭제가 완료되었습니다", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true){ + // tableView.deleteRows(at: [indexPath], with: .fade) + self.getmyAssetData() + // tableView.endUpdates() + } + } + else{ + let alertv = UIAlertController(title: "ERROR", message: "삭제 실패", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv,animated: true) } } - else{ - let alertv = UIAlertController(title: "ERROR", message: "삭제 실패", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv,animated: true) + case 1: + AssetModel.deleteMyAsset(token: mytoken!, transactionIdx: SellAssetData[indexPath.row].assetIdx, category: SellAssetData[indexPath.row].category){ + data in + //요청에 성공한 경우 + if(data.header.resultCode == 1000){ + let alertv = UIAlertController(title: "삭제완료", message: "삭제가 완료되었습니다", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true){ + // tableView.deleteRows(at: [indexPath], with: .fade) + self.getmyAssetData() + // tableView.endUpdates() + } + } + else{ + let alertv = UIAlertController(title: "ERROR", message: "삭제 실패", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv,animated: true) + } } - } -// case 1: -// default: - } + default: + break + }} } func scrollViewDidScroll(_ scrollView: UIScrollView) { if self.tableview.contentOffset.y < 0 { diff --git a/LGHTSG/LGHTSG/Controller/MainTabController.swift b/LGHTSG/LGHTSG/Controller/MainTabController.swift index fb6f7e2..d340d0a 100644 --- a/LGHTSG/LGHTSG/Controller/MainTabController.swift +++ b/LGHTSG/LGHTSG/Controller/MainTabController.swift @@ -7,14 +7,28 @@ import UIKit import Foundation + class MainTabController: UITabBarController { + override func viewDidLoad() { view.backgroundColor = .black + + /* + view.addSubview(tapImage) + self.tapImage.heightAnchor.constraint(equalTo: self.view.heightAnchor, multiplier: 0.2).isActive = true + self.tapImage.snp.makeConstraints{ + $0.bottom.equalToSuperview() + $0.left.equalToSuperview().offset(10) + $0.right.equalToSuperview().offset(-10) + $0.centerX.equalToSuperview() + } + */ super.viewDidLoad() let tabbarApperance = UITabBarAppearance() let tabbaritemappearcne = UITabBarItemAppearance() - tabbaritemappearcne.normal.titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.darkGray, .font: UIFont.systemFont(ofSize: 12.0, weight: .semibold)] - tabbaritemappearcne.selected.titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white, .font: UIFont.systemFont(ofSize: 12.0, weight: .semibold)] + + tabbaritemappearcne.normal.titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.darkGray, .font: UIFont(name: "NanumSquareEB", size: 12)] + tabbaritemappearcne.selected.titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white, .font: UIFont(name: "NanumSquareEB", size: 12)] tabbarApperance.stackedLayoutAppearance = tabbaritemappearcne tabbarApperance.backgroundColor = .black tabBar.scrollEdgeAppearance = tabbarApperance @@ -30,8 +44,7 @@ class MainTabController: UITabBarController { tabBar.layer.borderColor = UIColor.white.cgColor tabBar.clipsToBounds = false viewControllers = [HomeVC,ExploreVC] - - addSeparatorToTabBar() + //addSeparatorToTabBar() diff --git a/LGHTSG/LGHTSG/Controller/New Group/AccountSettingViewController.swift b/LGHTSG/LGHTSG/Controller/New Group/AccountSettingViewController.swift index ce944a4..f234d98 100644 --- a/LGHTSG/LGHTSG/Controller/New Group/AccountSettingViewController.swift +++ b/LGHTSG/LGHTSG/Controller/New Group/AccountSettingViewController.swift @@ -35,7 +35,7 @@ class AccountSettingViewController: UIViewController, UIGestureRecognizerDelegat image.contentMode = .scaleToFill image.layer.borderColor = UIColor.clear.cgColor // 원형 이미지의 테두리 제거 image.clipsToBounds = true - image.image = UIImage(named: "profile") + image.image = UIImage(named: "profile-money") image.translatesAutoresizingMaskIntoConstraints = false return image }() @@ -51,13 +51,12 @@ class AccountSettingViewController: UIViewController, UIGestureRecognizerDelegat let nameTextLabel: UILabel = { let name = UILabel() name.text = "라고함" - name.textColor = .white // 글자색을 흰색으로 - name.font = UIFont(name: "NanumSquareR", size: 16.0) + name.textColor = .systemGray // 글자색을 흰색으로 + name.font = UIFont(name: "NanumSquareEB", size: 14.0) name.translatesAutoresizingMaskIntoConstraints = false return name }() - - + // MARK: 사용자 이메일 let emailImageView: UIImageView = { let image = UIImageView() @@ -69,8 +68,8 @@ class AccountSettingViewController: UIViewController, UIGestureRecognizerDelegat let emailTextLabel: UILabel = { let name = UILabel() name.text = "abc123@rghtsg.com" - name.textColor = .white // 글자색을 흰색으로 - name.font = UIFont(name: "NanumSquareR", size: 16.0) + name.textColor = .systemGray // 글자색을 흰색으로 + name.font = UIFont(name: "NanumSquareEB", size: 14.0) name.translatesAutoresizingMaskIntoConstraints = false return name }() @@ -91,7 +90,7 @@ class AccountSettingViewController: UIViewController, UIGestureRecognizerDelegat name.borderStyle = .none name.textColor = .white // 글자색을 흰색으로 name.isSecureTextEntry = true - name.font = UIFont(name: "NanumSquareR", size: 16.0) + name.font = UIFont(name: "NanumSquareB", size: 14.0) name.addTarget(self, action: #selector(pwFieldEdited2), for: UIControl.Event.editingChanged) name.enablesReturnKeyAutomatically = true name.translatesAutoresizingMaskIntoConstraints = false @@ -123,7 +122,7 @@ class AccountSettingViewController: UIViewController, UIGestureRecognizerDelegat name.borderStyle = .none name.textColor = .white // 글자색을 흰색으로 name.isSecureTextEntry = true - name.font = UIFont(name: "NanumSquareR", size: 16.0) + name.font = UIFont(name: "NanumSquareB", size: 14.0) name.addTarget(self, action: #selector(pwFieldEdited2), for: UIControl.Event.editingChanged) name.enablesReturnKeyAutomatically = true name.translatesAutoresizingMaskIntoConstraints = false @@ -189,8 +188,11 @@ class AccountSettingViewController: UIViewController, UIGestureRecognizerDelegat "x-access-token" : jwt] var pastPassword : String = UserDefaults.standard.string(forKey: "pastPassword") ?? "" + // profileImg print(pastPassword) + let image = profileImageView.image + let changePw = PasswordApiModel() guard let password = passwordTextLabel.text else {return} @@ -209,6 +211,10 @@ class AccountSettingViewController: UIViewController, UIGestureRecognizerDelegat }) msg.addAction(YES) self.present(msg, animated: true, completion: nil) + + self.saveBtn.setBackgroundImage(UIImage(named: "not-save-btn"), for: .normal) + self.passwordTextLabel.text = "" + self.passwordCheckTextLabel.text = "" } @@ -313,16 +319,24 @@ class AccountSettingViewController: UIViewController, UIGestureRecognizerDelegat } } - @objc func tapDismissButton(){ self.presentingViewController?.dismiss(animated: true) } + // 키보드때문에 화면이 가려질 경우 화면을 올린다 + @objc func keyboardWillShow(sender: NSNotification) { + self.view.frame.origin.y = -100 // Move view 150 points upward + } + + @objc func keyboardWillHide(sender: NSNotification) { + self.view.frame.origin.y = 0 // Move view to original position + } + override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .black AutoLayout() - loadData() + loadData() // MARK: 키보드 올라갔을 때 화면 터치해서 내려가게함 let tapGesture = UITapGestureRecognizer(target: self.view, action: #selector(self.view.endEditing(_:))) @@ -330,6 +344,11 @@ class AccountSettingViewController: UIViewController, UIGestureRecognizerDelegat self.view.addGestureRecognizer(tapGesture) + // MARK: 키보드가 화면을 가릴 때 화면을 위로 올릴 수 있도록 + NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(sender:)), name: UIResponder.keyboardWillShowNotification, object: nil); + NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(sender:)), name: UIResponder.keyboardWillHideNotification, object: nil); + + // MARK: 네비게이션 컨트롤러 self.view.addSubview(navigationBar) let safeArea = self.view.safeAreaLayoutGuide @@ -386,52 +405,52 @@ class AccountSettingViewController: UIViewController, UIGestureRecognizerDelegat // MARK: profile 위치 설정 self.profileImageView.snp.makeConstraints{ - $0.top.equalToSuperview().offset(150) + $0.top.equalToSuperview().offset(140) $0.centerX.equalToSuperview() } profileImageView.snp.makeConstraints { make in - make.height.equalTo(85) - make.width.equalTo(85) + make.height.equalTo(100) + make.width.equalTo(100) } // MARK: 이름 설정 위치 self.nameImageView.snp.makeConstraints{ $0.top.equalToSuperview().offset(280) - $0.left.equalToSuperview().offset(20) - $0.right.equalToSuperview().offset(-20) + $0.left.equalToSuperview().offset(30) + $0.right.equalToSuperview().offset(-30) } self.nameTextLabel.snp.makeConstraints{ $0.top.equalToSuperview().offset(295) - $0.left.equalToSuperview().offset(35) - $0.right.equalToSuperview().offset(-20) + $0.left.equalToSuperview().offset(45) + $0.right.equalToSuperview().offset(-30) } // MARK: 이메일 작성 및 전송 버튼 위치 self.emailImageView.snp.makeConstraints{ $0.top.equalTo(nameImageView.snp.bottom).offset(30) - $0.left.equalToSuperview().offset(20) - $0.right.equalToSuperview().offset(-20) + $0.left.equalToSuperview().offset(30) + $0.right.equalToSuperview().offset(-30) } self.emailTextLabel.snp.makeConstraints{ $0.top.equalTo(nameImageView.snp.bottom).offset(45) - $0.left.equalToSuperview().offset(35) - $0.right.equalToSuperview().offset(-120) + $0.left.equalToSuperview().offset(45) + $0.right.equalToSuperview().offset(-30) } self.passwordImageView.snp.makeConstraints{ $0.top.equalTo(emailImageView.snp.bottom).offset(30) - $0.left.equalToSuperview().offset(20) - $0.right.equalToSuperview().offset(-20) + $0.left.equalToSuperview().offset(30) + $0.right.equalToSuperview().offset(-30) } self.passwordTextLabel.snp.makeConstraints{ $0.top.equalTo(emailImageView.snp.bottom).offset(45) - $0.left.equalToSuperview().offset(35) - $0.right.equalToSuperview().offset(-120) + $0.left.equalToSuperview().offset(45) + $0.right.equalToSuperview().offset(-30) } self.passwordValidLabel.snp.makeConstraints{ @@ -441,14 +460,14 @@ class AccountSettingViewController: UIViewController, UIGestureRecognizerDelegat self.passwordCheckImageView.snp.makeConstraints{ $0.top.equalTo(passwordImageView.snp.bottom).offset(30) - $0.left.equalToSuperview().offset(20) - $0.right.equalToSuperview().offset(-20) + $0.left.equalToSuperview().offset(30) + $0.right.equalToSuperview().offset(-30) } self.passwordCheckTextLabel.snp.makeConstraints{ $0.top.equalTo(passwordImageView.snp.bottom).offset(45) - $0.left.equalToSuperview().offset(35) - $0.right.equalToSuperview().offset(-120) + $0.left.equalToSuperview().offset(45) + $0.right.equalToSuperview().offset(-30) } self.passwordSameLabel.snp.makeConstraints{ @@ -458,7 +477,7 @@ class AccountSettingViewController: UIViewController, UIGestureRecognizerDelegat // MARK: 저장 버튼 self.saveBtn.snp.makeConstraints{ - $0.bottom.equalToSuperview().offset(-50) + $0.top.equalTo(passwordCheckImageView.snp.bottom).offset(30) $0.left.equalToSuperview().offset(40) $0.right.equalToSuperview().offset(-40) $0.height.equalTo(passwordImageView.snp.height) diff --git a/LGHTSG/LGHTSG/Controller/New Group/MyPageViewController.swift b/LGHTSG/LGHTSG/Controller/New Group/MyPageViewController.swift index f2cbdfc..2e33863 100644 --- a/LGHTSG/LGHTSG/Controller/New Group/MyPageViewController.swift +++ b/LGHTSG/LGHTSG/Controller/New Group/MyPageViewController.swift @@ -58,11 +58,32 @@ class MyPageViewController: UIViewController { @objc func logoutBtnClicked(){ var jwt : String = UserDefaults.standard.string(forKey: "savedToken") ?? "" print("토큰은 \(jwt)") - let vc = LoginController() + + //Alert 선언 + let msg = UIAlertController(title: "", message: "로그아웃 되었습니다.\n앱을 다시 실행하여 시작해보세요 :)", preferredStyle: .alert) + //Alert에 부여할 Yes이벤트 선언 + let YES = UIAlertAction(title: "확인", style: .default, handler: { (action) -> Void in + self.YesClick2() + }) + + // MARK: 자동로그인을 못하게 막는다 + UserDefaults.standard.set(false, forKey: "loginSuccess") + + msg.addAction(YES) + self.present(msg, animated: true, completion: nil) + /*let vc = LoginController() vc.modalPresentationStyle = .fullScreen self.present(vc, animated: true) + */ } + @objc func YesClick2(){ + UIApplication.shared.perform(#selector(NSXPCConnection.suspend)) + DispatchQueue.main.asyncAfter(deadline: .now()+0.5) {exit(0) + } + } + + @objc func tapDismissButton(){ self.presentingViewController?.dismiss(animated: true) } diff --git a/LGHTSG/LGHTSG/Controller/RankViewController.swift b/LGHTSG/LGHTSG/Controller/RankViewController.swift new file mode 100644 index 0000000..358a950 --- /dev/null +++ b/LGHTSG/LGHTSG/Controller/RankViewController.swift @@ -0,0 +1,176 @@ +// +// RankViewController.swift +// LGHTSG +// +// Created by HA on 2023/02/10. +// + +import UIKit +import SnapKit +import Alamofire +import Kingfisher + +class RankViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{ + //MARK: - Properties + + + lazy var label: UILabel = { + let label = UILabel() + label.text = "🏆 Ranking TOP 10 🏆" + label.font = UIFont(name: "NanumSquareEB", size: 20.0) + label.textColor = .white + return label + }() + + + lazy var tableView: UITableView = { + let table = UITableView() + table.backgroundColor = .clear + return table + }() + + //MARK: - Api + + + var userNameList = [String]() + var userAssetList = [Int]() + var userProfileList = [String]() + + + func getRankList() { + let url = "http://api.lghtsg.site:8090/event/demoday/user-ranking" + let header: HTTPHeaders = ["Content-Type" : "application/json"] + + AF.request(url, method: .get, headers: header) + .validate(statusCode: 200..<300) + .responseDecodable(of : RankingModel.self) { response in + switch response.result { + case .success(let res): + do { + + for index in 0.. CGFloat { + return 65 + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return userAssetList.count + + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + guard let cell = tableView.dequeueReusableCell(withIdentifier: RankViewCell.identifier, for: indexPath) as? RankViewCell else { return UITableViewCell() } + + cell.number.font = UIFont(name: "NanumSquareEB", size: 25.0) + cell.userName.font = UIFont(name: "NanumSquareEB", size: 15.0) + cell.userAsset.font = UIFont(name: "NanumSquareEB", size: 12.0) + cell.transCount.font = UIFont(name: "NanumSquareEB", size: 12.0) + cell.backgroundColor = .darkGray + cell.userName.textColor = .white + cell.userAsset.textColor = .lightGray + cell.layer.cornerRadius = 15 + cell.layer.borderWidth = 5 + cell.layer.masksToBounds = true + cell.number.text = String(indexPath.row + 1) + cell.backgroundColor = .darkGray + + if 2 < indexPath.row && indexPath.row < 9 { + cell.number.text! += " " + } + + if indexPath.row == 0 { + cell.number.text = "🥇 " + cell.number.font = UIFont(name: "NanumSquareB", size: 16) + cell.backgroundColor = .systemGray2 + cell.userName.textColor = .black + cell.userAsset.textColor = .systemPink + cell.transCount.textColor = .darkGray + //cell.iconImage.image = UIImage(named: "rank") + } + else if indexPath.row == 1 { + cell.number.text = "🥈 " + cell.number.font = UIFont(name: "NanumSquareB", size: 16) + cell.backgroundColor = .systemGray2 + cell.userName.textColor = .black + cell.userAsset.textColor = .systemPink + cell.transCount.textColor = .darkGray + // cell.iconImage.image = UIImage(named: "rank2") + } + else if indexPath.row == 2 { + cell.number.text = "🥉 " + cell.number.font = UIFont(name: "NanumSquareB", size: 16) + cell.backgroundColor = .systemGray2 + cell.userName.textColor = .black + cell.userAsset.textColor = .systemPink + cell.transCount.textColor = .darkGray + // cell.iconImage.image = UIImage(named: "rank3") + } + + else if indexPath.row == 9 { + cell.number.text = (cell.number.text ?? "") + "" + } + else { + cell.number.text = (cell.number.text ?? "") + "" + } + + + // cell.iconImage.kf.setImage(with: URL(string: estateDataLists[indexPath.row].iconImage)) + cell.userName.text = self.userNameList[indexPath.row] + cell.userAsset.text = "[자산 : \(self.userAssetList[indexPath.row])]" + // cell.iconImage.kf.setImage(with: URL(string: userProfileList[indexPath.row])) + cell.selectionStyle = .none + + return cell + + + } + +} + diff --git a/LGHTSG/LGHTSG/Controller/ReSellChartViewController.swift b/LGHTSG/LGHTSG/Controller/ReSellChartViewController.swift index 723f198..c7a1868 100644 --- a/LGHTSG/LGHTSG/Controller/ReSellChartViewController.swift +++ b/LGHTSG/LGHTSG/Controller/ReSellChartViewController.swift @@ -47,33 +47,33 @@ class ReSellChartViewController : UIViewController { }() private lazy var nameLabel : UILabel = { let label = UILabel() - label.font = .systemFont(ofSize: 16, weight: .semibold) + label.font = UIFont(name: "NanumSquareEB", size: 17.0) label.text = nameText label.textColor = .white return label }() private lazy var priceLabel : UILabel = { let label = UILabel() - label.font = .systemFont(ofSize: 14, weight: .medium) + label.font = UIFont(name: "NanumSquareB", size: 14.0) label.textColor = UIColor.systemGray label.text = PriceText return label }() private lazy var pricePercent : UILabel = { let label = UILabel() - label.font = .systemFont(ofSize: 12, weight: .medium) - label.textColor = UIColor.red + label.font = UIFont(name: "NanumSquareEB", size: 12.0) + label.textColor = UIColor.systemRed label.text = pricePercentText if (label.text!.prefix(1) == "-"){ - label.textColor = UIColor.blue + label.textColor = UIColor.systemBlue }else{ - label.textColor = UIColor.red + label.textColor = UIColor.systemRed } return label }() private lazy var changeDate : UILabel = { let label = UILabel() - label.font = .systemFont(ofSize: 12, weight : .medium) + label.font = UIFont(name: "NanumSquareB", size: 12.0) label.textColor = UIColor.systemGray label.text = changeDateText return label @@ -82,15 +82,15 @@ class ReSellChartViewController : UIViewController { private lazy var dealLabel: UILabel = { let label = UILabel() label.text = "거래 이력" - label.font = UIFont.systemFont(ofSize: 12, weight: .light) + label.font = UIFont(name: "NanumSquareEB", size: 14.0) label.textColor = .white return label }() private lazy var revenueLabel: UILabel = { let label = UILabel() - label.textColor = .white - label.font = UIFont.systemFont(ofSize: 16, weight: .bold) + label.textColor = .systemBlue + label.font = UIFont(name: "NanumSquareEB", size: 16.0) return label }() private lazy var imageView : UIImageView = { @@ -107,7 +107,7 @@ class ReSellChartViewController : UIViewController { //MARK: - SegmentControl private lazy var segmentCtrl: UISegmentedControl = { - let items = ["일","월", "1년", "3년"] + let items = ["3년","반년", "1년", "3년"] let seg = UISegmentedControl(items: items) seg.addTarget(self, action: #selector(indexChanged(_:)), for: .valueChanged) seg.layer.cornerRadius = 0.7 @@ -117,14 +117,14 @@ class ReSellChartViewController : UIViewController { seg.setTitleTextAttributes( [ NSAttributedString.Key.foregroundColor: UIColor.white, - .font: UIFont.systemFont(ofSize: 14, weight: .semibold) + .font: UIFont(name: "NanumSquareEB", size: 14.0) ], for: .selected ) seg.setTitleTextAttributes( [ NSAttributedString.Key.foregroundColor: UIColor.systemGray, - .font: UIFont.systemFont(ofSize: 14, weight: .semibold) + .font: UIFont(name: "NanumSquareEB", size: 14.0) ], for: .normal ) @@ -137,11 +137,12 @@ class ReSellChartViewController : UIViewController { let btn = UIButton() var config = UIButton.Configuration.filled() config.attributedTitle = "원하시는 구매시점을 클릭해주세요" + config.attributedTitle?.font = UIFont(name: "NanumSquareEB", size: 14.0) + btn.configuration = config btn.layer.cornerRadius = 10 - btn.backgroundColor = .blue - btn.tintColor = .blue - btn.layer.borderWidth = 1 + btn.backgroundColor = .systemBlue + btn.tintColor = .systemBlue btn.addTarget(self, action: #selector(sellbtnclicked), for: .touchUpInside) return btn }() @@ -151,13 +152,14 @@ class ReSellChartViewController : UIViewController { config.titleAlignment = .center if let markerDate = self.markertime { var titleAttribute = AttributeContainer() - titleAttribute.font = .systemFont(ofSize: 10, weight: .medium) + titleAttribute.font = UIFont(name: "NanumSquareB", size: 10.0) config.attributedTitle = AttributedString(markerDate, attributes: titleAttribute) config.titlePadding = 3.0 } var subtitleAttribute = AttributeContainer() - subtitleAttribute.font = .systemFont(ofSize: 15, weight: .bold) + subtitleAttribute.font = UIFont(name: "NanumSquareEB", size: 15.0) config.attributedSubtitle = AttributedString("판매", attributes: subtitleAttribute) + self.sellButton.configuration = config self.sellButton.backgroundColor = .white } @@ -166,60 +168,72 @@ class ReSellChartViewController : UIViewController { config.titleAlignment = .center if let markerDate = self.markertime { var titleAttribute = AttributeContainer() - titleAttribute.font = .systemFont(ofSize: 10, weight: .medium) + titleAttribute.font = UIFont(name: "NanumSquareB", size: 10.0) config.attributedTitle = AttributedString(markerDate, attributes: titleAttribute) config.titlePadding = 3.0 } var subtitleAttribute = AttributeContainer() - subtitleAttribute.font = .systemFont(ofSize: 15, weight: .bold) + subtitleAttribute.font = UIFont(name: "NanumSquareEB", size: 15.0) subtitleAttribute.backgroundColor = .white config.attributedSubtitle = AttributedString("구매", attributes: subtitleAttribute) self.sellButton.configuration = config - self.sellButton.backgroundColor = .blue + self.sellButton.backgroundColor = .systemBlue } } //MARK: - btnclickevent @objc func sellbtnclicked(){ let trademodel = StocktradeModel() - if(sellMode == true){ - trademodel.requestSellstock(assetIdx: self.idx!, category: "resell", price: self.markerprice!, transactionTime: self.markertime!, token: mytoken!){ - data in - if(data.header.resultCode == 4009){ - let alertv = UIAlertController(title: "Error", message: "판매하려는 시기 이후에 구매하였습니다.", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true) - } - else if (data.header.resultCode == 4006){ - let alertv = UIAlertController(title: "Error", message: "이미 판매를 한 상품입니다.", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true) - } - else{ - let alertv = UIAlertController(title: "판매완료", message: "판매가 완료되었습니다", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true){ - self.getTradeLists() - self.tableView.reloadData() - } - }} - }else{ - //구매하기 - trademodel.requestBuystock(assetIdx: self.idx!, category: "resell", price: self.markerprice!, transactionTime: self.markertime!, token: mytoken!) { - data in - if(data.header.resultCode == 4005){ - let alertv = UIAlertController(title: "Error", message: "이미 구매를 한 상품입니다.", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true) - } - else if(data.header.resultCode == 1000){ - let alertv = UIAlertController(title: "구매완료 ", message: "구매가 완료되었습니다", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true) - self.getTradeLists() - self.tableView.reloadData() - } - } - } + if let markertime = self.markertime { + if(sellMode == true){ + trademodel.requestSellstock(assetIdx: self.idx!, category: "resell", price: self.markerprice!, transactionTime: markertime, token: mytoken!){ + data in + if(data.header.resultCode == 4009){ + let alertv = UIAlertController(title: "Error", message: "판매하려는 시기 이후에 구매하였습니다.", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + } + else if (data.header.resultCode == 4006){ + let alertv = UIAlertController(title: "Error", message: "이미 판매를 한 상품입니다.", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + } + else if(data.header.resultCode == 1000){ + let alertv = UIAlertController(title: "판매완료", message: "판매가 완료되었습니다", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true){ + self.getTradeLists() + self.tableView.reloadData() + } + } + else{ + let alertv = UIAlertController(title: "Error", message: "Error.", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + }} + }else{ + //구매하기 + trademodel.requestBuystock(assetIdx: self.idx!, category: "resell", price: self.markerprice!, transactionTime: markertime, token: mytoken!) { + data in + if(data.header.resultCode == 4005){ + let alertv = UIAlertController(title: "Error", message: "이미 구매를 한 상품입니다.", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + } + else if(data.header.resultCode == 1000){ + let alertv = UIAlertController(title: "구매완료 ", message: "구매가 완료되었습니다", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + self.getTradeLists() + self.tableView.reloadData() + } + else if(data.header.resultCode == 4208){ + let alertv = UIAlertController(title: "구매실패", message: "동일 자산을 2번 이상 구매하였습니다.", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + } + } + } + } } //MARK: - TableView private lazy var tableView: UITableView = { @@ -229,6 +243,8 @@ class ReSellChartViewController : UIViewController { }() + + //MARK: - LifeCycle override func viewDidLoad() { super.viewDidLoad() @@ -275,6 +291,15 @@ class ReSellChartViewController : UIViewController { self.tradeListData = data.body! //현재 가지고 있는 경우 if(data.body!.last?.sellCheck == 0){ + + let subData = Double( self.priceListDatas.last! - data.body!.last!.price ) / Double(data.body!.last!.price) * 100 + if subData > 0 { + self.revenueLabel.textColor = .systemBlue + } + else { + self.revenueLabel.textColor = .systemRed + } + self.revenueLabel.text = "구매시점에 비해서 \(String(format: "%.2f", Double(( self.priceListDatas.last! - data.body!.last!.price )) / Double(data.body!.last!.price) * 100))% " self.sellMode = true }else{ @@ -288,8 +313,8 @@ class ReSellChartViewController : UIViewController { @objc func indexChanged(_ sender: UISegmentedControl){ switch sender.selectedSegmentIndex{ case 0: - changeDate.text = "일주일 대비" - let monthagoday = Calendar.current.date(byAdding: .day, value: -7, to: todayDate)! + changeDate.text = "세달 대비" + let monthagoday = Calendar.current.date(byAdding: .day, value: -90, to: todayDate)! let monthagodate = dateFormatter.string(from: monthagoday) // 만약 첫 거래가 7일 최근인경우 if(timeListDatas[0] > monthagodate ) { @@ -310,16 +335,16 @@ class ReSellChartViewController : UIViewController { self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: temppriceListDatas), xAxis: temptimeListDatas, recentPrice : Double(temppriceListDatas.last!)) pricePercent.text = "\(String(format: "%.2f", Double((temppriceListDatas.last! - temppriceListDatas[0])) / Double(temppriceListDatas[0]) * 100))%" if(pricePercent.text?.prefix(1) == "-"){ - pricePercent.textColor = UIColor.blue + pricePercent.textColor = UIColor.systemBlue } else{ - pricePercent.textColor = UIColor.red + pricePercent.textColor = UIColor.systemRed } tableView.reloadData() } case 1: - changeDate.text = "한달 대비" - let yearagoday = Calendar.current.date(byAdding: .day, value: -30, to: todayDate)! + changeDate.text = "반년 대비" + let yearagoday = Calendar.current.date(byAdding: .day, value: -180, to: todayDate)! let yearagodate = dateFormatter.string(from: yearagoday) // 만약 첫 거래가1년보다 최근인경우 let firstTradeDate = timeListDatas[0] @@ -358,10 +383,10 @@ class ReSellChartViewController : UIViewController { self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: temppriceListDatas), xAxis: temptimeListDatas, recentPrice : Double(temppriceListDatas.last!)) pricePercent.text = "\(String(format: "%.2f", Double((temppriceListDatas.last! - temppriceListDatas[0])) / Double(temppriceListDatas[0]) * 100))%" if(pricePercent.text?.prefix(1) == "-"){ - pricePercent.textColor = UIColor.blue + pricePercent.textColor = UIColor.systemBlue } else{ - pricePercent.textColor = UIColor.red + pricePercent.textColor = UIColor.systemRed } tableView.reloadData() } @@ -407,10 +432,10 @@ class ReSellChartViewController : UIViewController { self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: temppriceListDatas), xAxis: temptimeListDatas, recentPrice : Double(temppriceListDatas.last!)) pricePercent.text = "\(String(format: "%.2f", Double((temppriceListDatas.last! - temppriceListDatas[0])) / Double(temppriceListDatas[0]) * 100))%" if(pricePercent.text?.prefix(1) == "-"){ - pricePercent.textColor = UIColor.blue + pricePercent.textColor = UIColor.systemBlue } else{ - pricePercent.textColor = UIColor.red + pricePercent.textColor = UIColor.systemRed } tableView.reloadData() } @@ -455,10 +480,10 @@ class ReSellChartViewController : UIViewController { self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: temppriceListDatas), xAxis: temptimeListDatas, recentPrice : Double(temppriceListDatas.last!)) pricePercent.text = "\(String(format: "%.2f", Double((temppriceListDatas.last! - temppriceListDatas[0])) / Double(temppriceListDatas[0]) * 100))%" if(pricePercent.text?.prefix(1) == "-"){ - pricePercent.textColor = UIColor.blue + pricePercent.textColor = UIColor.systemBlue } else{ - pricePercent.textColor = UIColor.red + pricePercent.textColor = UIColor.systemRed } tableView.reloadData() } @@ -478,6 +503,12 @@ extension ReSellChartViewController : UITableViewDelegate, UITableViewDataSource func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { guard let cell = tableView.dequeueReusableCell(withIdentifier: EstateDetailCell.identifier, for: indexPath) as? EstateDetailCell else { return UITableViewCell() } + + cell.date.font = UIFont(name: "NanumSquareEB", size: 13) + cell.price.font = UIFont(name: "NanumSquareEB", size: 13) + cell.buysell.font = UIFont(name: "NanumSquareEB", size: 13) + + cell.date.text = tradeListData[indexPath.row].transactionTime cell.date.textColor = .white cell.price.text = "\(tradeListData[indexPath.row].price)원" @@ -486,11 +517,12 @@ extension ReSellChartViewController : UITableViewDelegate, UITableViewDataSource if(tradeListData[indexPath.row].sellCheck == 0 ){ cell.buysell.text = "구매" + cell.buysell.textColor = .systemRed } else if(tradeListData[indexPath.row].sellCheck == 1){ cell.buysell.text = "판매" + cell.buysell.textColor = .systemBlue } - cell.buysell.textColor = .white return cell } } @@ -500,7 +532,7 @@ extension ReSellChartViewController { let lineChartdataSet = LineChartDataSet(entries: lineChartDataEntries, label: "주가") lineChartdataSet.drawValuesEnabled = false lineChartdataSet.drawCirclesEnabled = false - lineChartdataSet.colors = [.blue] + lineChartdataSet.colors = [.systemBlue] //선택했을때 라인 지워주기 lineChartdataSet.drawHorizontalHighlightIndicatorEnabled = false // lineChartdataSet.drawVerticalHighlightIndicatorEnabled = false @@ -604,7 +636,7 @@ extension ReSellChartViewController { } private func configure(){ - lineImage.backgroundColor = .label + lineImage.backgroundColor = .white self.view.addSubview(contentScrollView) self.view.addSubview(sellButton) // 스크롤뷰 세로로 diff --git a/LGHTSG/LGHTSG/Controller/StockChartViewController.swift b/LGHTSG/LGHTSG/Controller/StockChartViewController.swift index b6244e7..18809e3 100644 --- a/LGHTSG/LGHTSG/Controller/StockChartViewController.swift +++ b/LGHTSG/LGHTSG/Controller/StockChartViewController.swift @@ -10,7 +10,8 @@ import UIKit import Charts import SnapKit class StockChartViewController : UIViewController { - var stockPriceData = StockPriceModel() + + var stockPriceData = StockPriceModel() var EstatePriceData = EstatePriceModel() var nameText : String? private var mytoken = UserDefaults.standard.string(forKey: "savedToken") @@ -37,32 +38,32 @@ class StockChartViewController : UIViewController { }() private lazy var nameLabel : UILabel = { let label = UILabel() - label.font = .systemFont(ofSize: 17, weight: .semibold) + label.font = UIFont(name: "NanumSquareEB", size: 17.0) label.textColor = UIColor.white label.text = nameText return label }() private lazy var priceLabel : UILabel = { let label = UILabel() - label.font = .systemFont(ofSize: 14, weight: .medium) + label.font = UIFont(name: "NanumSquareB", size: 14.0) label.textColor = UIColor.systemGray return label }() private lazy var pricePercent : UILabel = { let label = UILabel() - label.font = .systemFont(ofSize: 12, weight: .medium) + label.font = UIFont(name: "NanumSquareEB", size: 12.0) label.text = pricePercentText if (label.text!.prefix(1) == "-"){ - label.textColor = UIColor.blue + label.textColor = UIColor.systemBlue }else{ - label.textColor = UIColor.red + label.textColor = UIColor.systemRed } return label }() private lazy var changeDate : UILabel = { let label = UILabel() - label.font = .systemFont(ofSize: 12, weight : .medium) + label.font = UIFont(name: "NanumSquareB", size: 12.0) label.textColor = UIColor.systemGray label.text = changeDateText return label @@ -71,15 +72,15 @@ class StockChartViewController : UIViewController { private lazy var dealLabel: UILabel = { let label = UILabel() label.text = "거래 이력" - label.font = UIFont.systemFont(ofSize: 12, weight: .light) + label.font = UIFont(name: "NanumSquareEB", size: 14.0) label.textColor = .white return label }() private lazy var revenueLabel: UILabel = { let label = UILabel() - label.textColor = .white - label.font = UIFont.systemFont(ofSize: 16, weight: .bold) + label.textColor = .systemBlue + label.font = UIFont(name: "NanumSquareEB", size: 16.0) return label }() @@ -98,14 +99,14 @@ class StockChartViewController : UIViewController { seg.setTitleTextAttributes( [ NSAttributedString.Key.foregroundColor: UIColor.white, - .font: UIFont.systemFont(ofSize: 14, weight: .semibold) + .font: UIFont(name: "NanumSquareEB", size: 14.0) ], for: .selected ) seg.setTitleTextAttributes( [ NSAttributedString.Key.foregroundColor: UIColor.systemGray, - .font: UIFont.systemFont(ofSize: 14, weight: .semibold) + .font: UIFont(name: "NanumSquareEB", size: 14.0) ], for: .normal ) @@ -118,11 +119,11 @@ class StockChartViewController : UIViewController { let btn = UIButton() var config = UIButton.Configuration.filled() config.attributedTitle = "원하시는 구매시점을 클릭해주세요" + config.attributedTitle?.font = UIFont(name: "NanumSquareEB", size: 14.0) btn.configuration = config btn.layer.cornerRadius = 10 - btn.backgroundColor = .blue - btn.tintColor = .blue - btn.layer.borderWidth = 1 + btn.backgroundColor = .systemBlue + btn.tintColor = .systemBlue btn.addTarget(self, action: #selector(sellbtnclicked), for: .touchUpInside) return btn @@ -134,12 +135,12 @@ class StockChartViewController : UIViewController { config.titleAlignment = .center if let markerDate = self.markerDate { var titleAttribute = AttributeContainer() - titleAttribute.font = .systemFont(ofSize: 10, weight: .medium) + titleAttribute.font = UIFont(name: "NanumSquareB", size: 10.0) config.attributedTitle = AttributedString(markerDate, attributes: titleAttribute) config.titlePadding = 3.0 } var subtitleAttribute = AttributeContainer() - subtitleAttribute.font = .systemFont(ofSize: 15, weight: .bold) + subtitleAttribute.font = UIFont(name: "NanumSquareEB", size: 15.0) config.attributedSubtitle = AttributedString("판매", attributes: subtitleAttribute) self.sellButton.configuration = config self.sellButton.backgroundColor = .white @@ -149,16 +150,16 @@ class StockChartViewController : UIViewController { config.titleAlignment = .center if let markerDate = self.markerDate { var titleAttribute = AttributeContainer() - titleAttribute.font = .systemFont(ofSize: 10, weight: .medium) + titleAttribute.font = UIFont(name: "NanumSquareB", size: 10.0) config.attributedTitle = AttributedString(markerDate, attributes: titleAttribute) config.titlePadding = 3.0 } var subtitleAttribute = AttributeContainer() - subtitleAttribute.font = .systemFont(ofSize: 15, weight: .bold) + subtitleAttribute.font = UIFont(name: "NanumSquareEB", size: 15.0) subtitleAttribute.backgroundColor = .white config.attributedSubtitle = AttributedString("구매", attributes: subtitleAttribute) self.sellButton.configuration = config - self.sellButton.backgroundColor = .blue + self.sellButton.backgroundColor = .systemBlue } } //MARK: - MarkerDatachange @@ -203,6 +204,17 @@ class StockChartViewController : UIViewController { self.tradeListData = data.body! //현재 가지고 있는 경우 if(data.body!.last?.sellCheck == 0){ + + let subData = Double( self.priceListDatas.last! - data.body!.last!.price ) / Double(data.body!.last!.price) * 100 + if subData > 0 { + self.revenueLabel.textColor = .systemBlue + } + else { + self.revenueLabel.textColor = .systemRed + } + + + self.revenueLabel.text = "구매시점에 비해서 \(String(format: "%.2f", Double(( self.priceListDatas.last! - data.body!.last!.price )) / Double(data.body!.last!.price) * 100))% " self.sellMode = true }else{ @@ -231,10 +243,10 @@ class StockChartViewController : UIViewController { temppriceListDatas = daypricedata pricePercent.text = "\(String(format: "%.2f", Double((temppriceListDatas.last! - temppriceListDatas[0])) / Double(temppriceListDatas[0]) * 100))%" if(pricePercent.text?.prefix(1) == "-"){ - pricePercent.textColor = UIColor.blue + pricePercent.textColor = UIColor.systemBlue } else{ - pricePercent.textColor = UIColor.red + pricePercent.textColor = UIColor.systemRed } tableView.reloadData() case 1: @@ -246,10 +258,10 @@ class StockChartViewController : UIViewController { temptimeListDatas = monthtimeListDatas pricePercent.text = "\(String(format: "%.2f", Double((temppriceListDatas.last! - temppriceListDatas[0])) / Double(temppriceListDatas[0]) * 100))%" if(pricePercent.text?.prefix(1) == "-"){ - pricePercent.textColor = UIColor.blue + pricePercent.textColor = UIColor.systemBlue } else{ - pricePercent.textColor = UIColor.red + pricePercent.textColor = UIColor.systemRed } tableView.reloadData() case 2: @@ -293,10 +305,10 @@ class StockChartViewController : UIViewController { self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: temppriceListDatas), xAxis: temptimeListDatas, recentPrice : Double(temppriceListDatas.last!)) pricePercent.text = "\(String(format: "%.2f", Double((temppriceListDatas.last! - temppriceListDatas[0])) / Double(temppriceListDatas[0]) * 100))%" if(pricePercent.text?.prefix(1) == "-"){ - pricePercent.textColor = UIColor.blue + pricePercent.textColor = UIColor.systemBlue } else{ - pricePercent.textColor = UIColor.red + pricePercent.textColor = UIColor.systemRed } tableView.reloadData() } @@ -326,10 +338,10 @@ class StockChartViewController : UIViewController { self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: priceListDatas), xAxis: timeListDatas, recentPrice : Double(priceListDatas.last!)) pricePercent.text = "\(String(format: "%.2f", Double((temppriceListDatas.last! - temppriceListDatas[0])) / Double(temppriceListDatas[0]) * 100))%" if(pricePercent.text?.prefix(1) == "-"){ - pricePercent.textColor = UIColor.blue + pricePercent.textColor = UIColor.systemBlue } else{ - pricePercent.textColor = UIColor.red + pricePercent.textColor = UIColor.systemRed } tableView.reloadData() } @@ -347,10 +359,10 @@ class StockChartViewController : UIViewController { self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: temppriceListDatas), xAxis: temptimeListDatas, recentPrice : Double(temppriceListDatas.last!)) pricePercent.text = "\(String(format: "%.2f", Double((temppriceListDatas.last! - temppriceListDatas[0])) / Double(temppriceListDatas[0]) * 100))%" if(pricePercent.text?.prefix(1) == "-"){ - pricePercent.textColor = UIColor.blue + pricePercent.textColor = UIColor.systemBlue } else{ - pricePercent.textColor = UIColor.red + pricePercent.textColor = UIColor.systemRed } tableView.reloadData() } @@ -360,48 +372,56 @@ class StockChartViewController : UIViewController { } //MARK: - btnclickevent @objc func sellbtnclicked(){ - let trademodel = StocktradeModel() - if(sellMode == true){ - trademodel.requestSellstock(assetIdx: self.idx!, category: "stock", price: self.markerPrice!, transactionTime: self.markerDate!, token: mytoken!){ - data in - if(data.header.resultCode == 4009){ - let alertv = UIAlertController(title: "Error", message: "판매하려는 시기 이후에 구매하였습니다.", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true) - } - else if (data.header.resultCode == 4006){ - let alertv = UIAlertController(title: "Error", message: "이미 판매를 한 상품입니다.", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true) - } - else{ - let alertv = UIAlertController(title: "판매완료", message: "판매가 완료되었습니다", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true){ - self.getTradeLists() - self.tableView.reloadData() + let trademodel = StocktradeModel() + if let markerDate = self.markerDate { + if(sellMode == true){ + trademodel.requestSellstock(assetIdx: self.idx!, category: "stock", price: self.markerPrice!, transactionTime: markerDate, token: mytoken!){ + data in + if(data.header.resultCode == 4009){ + let alertv = UIAlertController(title: "Error", message: "판매하려는 시기 이후에 구매하였습니다.", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + } + else if (data.header.resultCode == 4006){ + let alertv = UIAlertController(title: "Error", message: "이미 판매를 한 상품입니다.", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + } + else{ + let alertv = UIAlertController(title: "판매완료", message: "판매가 완료되었습니다", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true){ + self.getTradeLists() + self.tableView.reloadData() + } + }} + }else{ + //구매하기 + trademodel.requestBuystock(assetIdx: self.idx!, category: "stock", price: self.markerPrice!, transactionTime: markerDate, token: mytoken!) { + data in + if(data.header.resultCode == 4005){ + let alertv = UIAlertController(title: "Error", message: "이미 구매를 한 상품입니다.", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + } + else if(data.header.resultCode == 1000){ + let alertv = UIAlertController(title: "구매완료 ", message: "구매가 완료되었습니다", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + self.getTradeLists() + self.tableView.reloadData() + } + else if(data.header.resultCode == 4208){ + let alertv = UIAlertController(title: "구매실패", message: "동일 자산을 2번 이상 구매하였습니다.", preferredStyle: UIAlertController.Style.alert) + alertv.addAction(UIAlertAction(title: "OK", style: .default)) + self.present(alertv, animated: true) + } } - }} - }else{ - //구매하기 - trademodel.requestBuystock(assetIdx: self.idx!, category: "stock", price: self.markerPrice!, transactionTime: self.markerDate!, token: mytoken!) { - data in - if(data.header.resultCode == 4005){ - let alertv = UIAlertController(title: "Error", message: "이미 구매를 한 상품입니다.", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true) - } - else if(data.header.resultCode == 1000){ - let alertv = UIAlertController(title: "구매완료 ", message: "구매가 완료되었습니다", preferredStyle: UIAlertController.Style.alert) - alertv.addAction(UIAlertAction(title: "OK", style: .default)) - self.present(alertv, animated: true) - self.getTradeLists() - self.tableView.reloadData() } } + } } - } extension StockChartViewController : UITableViewDelegate, UITableViewDataSource { //cell 높이조절 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { @@ -413,6 +433,10 @@ class StockChartViewController : UIViewController { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { guard let cell = tableView.dequeueReusableCell(withIdentifier: EstateDetailCell.identifier, for: indexPath) as? EstateDetailCell else { return UITableViewCell() } cell.selectionStyle = .none + + cell.date.font = UIFont(name: "NanumSquareEB", size: 13) + cell.price.font = UIFont(name: "NanumSquareEB", size: 13) + cell.buysell.font = UIFont(name: "NanumSquareEB", size: 13) cell.date.text = tradeListData[indexPath.row].transactionTime cell.date.textColor = .white @@ -420,11 +444,12 @@ class StockChartViewController : UIViewController { cell.price.textColor = .white if(tradeListData[indexPath.row].sellCheck == 0 ){ cell.buysell.text = "구매" + cell.buysell.textColor = .systemRed } else if(tradeListData[indexPath.row].sellCheck == 1){ cell.buysell.text = "판매" + cell.buysell.textColor = .systemBlue } - cell.buysell.textColor = .white return cell } } @@ -434,7 +459,7 @@ class StockChartViewController : UIViewController { let lineChartdataSet = LineChartDataSet(entries: lineChartDataEntries, label: "주가") lineChartdataSet.drawValuesEnabled = false lineChartdataSet.drawCirclesEnabled = false - lineChartdataSet.colors = [.blue] + lineChartdataSet.colors = [.systemBlue] //선택했을때 라인 지워주기 lineChartdataSet.drawHorizontalHighlightIndicatorEnabled = false // lineChartdataSet.drawVerticalHighlightIndicatorEnabled = false diff --git a/LGHTSG/LGHTSG/LaunchScreen.storyboard b/LGHTSG/LGHTSG/LaunchScreen.storyboard index 865e932..85ec7a8 100644 --- a/LGHTSG/LGHTSG/LaunchScreen.storyboard +++ b/LGHTSG/LGHTSG/LaunchScreen.storyboard @@ -1,8 +1,12 @@ - - + + + - + + + + @@ -11,15 +15,36 @@ - + - + + + + + + + + + + + - + + + + + + + + + + + + diff --git a/LGHTSG/LGHTSG/View/ChartMarker.swift b/LGHTSG/LGHTSG/View/ChartMarker.swift index 4e549fc..d0ac393 100644 --- a/LGHTSG/LGHTSG/View/ChartMarker.swift +++ b/LGHTSG/LGHTSG/View/ChartMarker.swift @@ -31,7 +31,7 @@ class ChartMarker: MarkerView { // if (self.pricepercent[self.pricepercent.startIndex] == "-") { // let attributeStr = NSMutableAttributedString(string: text) // } - text = "이때 샀다면 지금\(self.pricepercent)" + text = "이때 샀다면 지금 \(self.pricepercent)" if(priceDate != pricedatelists[Int(entry.x)]){ let data = [pricedatelists[Int(entry.x)] : Int(entry.y)] NotificationCenter.default.post(name: Notification.Name("markerdata"), object: nil, userInfo: data) @@ -44,8 +44,8 @@ class ChartMarker: MarkerView { override func draw(context: CGContext, point: CGPoint) { super.draw(context: context, point: point) var drawAttributes = [NSAttributedString.Key : Any]() - drawAttributes[.font] = UIFont.systemFont(ofSize: 12) - drawAttributes[.foregroundColor] = UIColor.white + drawAttributes[.font] = UIFont(name: "NanumSquareEB", size: 12) + drawAttributes[.foregroundColor] = UIColor.systemGreen drawAttributes[.backgroundColor] = UIColor.clear self.bounds.size = ("\(text)" as NSString).size(withAttributes: drawAttributes) self.offset = CGPoint(x: -self.bounds.size.width / 2, y: self.bounds.size.height * 2) @@ -59,10 +59,10 @@ class ChartMarker: MarkerView { } drawText(text: " \(text) " as NSString, rect: CGRect(origin: CGPoint(x: point.x + offset.x, y: 0), size: self.bounds.size), withAttributes: drawAttributes) self.bounds.size = ("\(pricetext)" as NSString).size(withAttributes: drawAttributes) - drawAttributes[.font] = UIFont.systemFont(ofSize: 10) + drawAttributes[.font] = UIFont(name: "NanumSquareEB", size: 10) drawAttributes[.foregroundColor] = UIColor.lightGray drawText(text: "\(priceDate)" as NSString, rect: CGRect(origin: CGPoint(x: point.x + offset.x / 2, y: offset.y), size: self.bounds.size ), withAttributes: drawAttributes) - drawAttributes[.font] = UIFont.systemFont(ofSize: 12) + drawAttributes[.font] = UIFont(name: "NanumSquareEB", size: 12) drawAttributes[.foregroundColor] = UIColor.white drawText(text: "\(pricetext)" as NSString, rect: CGRect(origin: CGPoint(x: point.x + offset.x / 2, y: offset.y / 2 ), size: self.bounds.size ), withAttributes: drawAttributes) // let data = [priceDate : price!] diff --git a/LGHTSG/LGHTSG/View/EstateDetailCell.swift b/LGHTSG/LGHTSG/View/EstateDetailCell.swift index b485095..eebb022 100644 --- a/LGHTSG/LGHTSG/View/EstateDetailCell.swift +++ b/LGHTSG/LGHTSG/View/EstateDetailCell.swift @@ -12,21 +12,21 @@ class EstateDetailCell: UITableViewCell { lazy var date: UILabel = { let label = UILabel() - label.font = UIFont(name: "NanumSquareR", size: 14.0) + label.font = UIFont(name: "NanumSquareB", size: 14.0) label.textColor = .white return label }() lazy var price: UILabel = { let label = UILabel() - label.font = UIFont(name: "NanumSquareR", size: 14.0) + label.font = UIFont(name: "NanumSquareB", size: 14.0) label.textColor = .white return label }() lazy var buysell: UILabel = { let label = UILabel() - label.font = UIFont(name: "NanumSquareR", size: 14.0) + label.font = UIFont(name: "NanumSquareB", size: 14.0) label.textColor = .white return label }() @@ -34,8 +34,7 @@ class EstateDetailCell: UITableViewCell { override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) contentView.frame = contentView.frame.inset(by: UIEdgeInsets(top: 6, left: 6, bottom: 6, right: 6)) - self.backgroundColor = .black - + self.backgroundColor = .black self.cellSetting() } diff --git a/LGHTSG/LGHTSG/View/EstateSaleCell.swift b/LGHTSG/LGHTSG/View/EstateSaleCell.swift index 056b52c..418224f 100644 --- a/LGHTSG/LGHTSG/View/EstateSaleCell.swift +++ b/LGHTSG/LGHTSG/View/EstateSaleCell.swift @@ -19,6 +19,7 @@ class EstateSaleCell: UITableViewCell { lazy var title: UILabel = { let label = UILabel() + label.font = UIFont(name: "NanumSquareEB", size: 10.0) return label }() @@ -29,7 +30,7 @@ class EstateSaleCell: UITableViewCell { lazy var pow: UILabel = { let label = UILabel() - label.font = UIFont(name: "NanumSquareB", size: 10.0) + label.font = UIFont(name: "NanumSquareEB", size: 10.0) return label }() @@ -95,3 +96,5 @@ class EstateSaleCell: UITableViewCell { } } + + diff --git a/LGHTSG/LGHTSG/View/ExploreVC/EstateController.swift b/LGHTSG/LGHTSG/View/ExploreVC/EstateController.swift index 872bad0..3cd6f28 100644 --- a/LGHTSG/LGHTSG/View/ExploreVC/EstateController.swift +++ b/LGHTSG/LGHTSG/View/ExploreVC/EstateController.swift @@ -18,9 +18,20 @@ class EstateController: UIViewController, ChartViewDelegate, CLLocationManagerDe var estateModel = EstatePriceModel() //MARK: - SearchBar var items = [String]() - var samples = [String]() - let disposeBag = DisposeBag() + var samples = [String]() + let disposeBag = DisposeBag() + private let todayDate = Date() + var dateFormatter : DateFormatter = { + let dateFormatter = DateFormatter() + dateFormatter.dateFormat = "yyyy-MM-dd" + return dateFormatter + }() + var temppriceListDatas = [Int]() + var temptimeListDatas = [String]() + + var estateDataLists = [EstatePriceDetailModel.EstateBody]() + private lazy var searchBar: UISearchBar = { let search = UISearchBar() search.searchTextField.font = UIFont(name: "NanumSquareB", size: 15) @@ -32,7 +43,9 @@ class EstateController: UIViewController, ChartViewDelegate, CLLocationManagerDe search.searchTextField.leftView?.tintColor = .white return search }() - var Areaname = "대전광역시+유성구+계산동" + + var Areaname = "" + func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { tableView2.alpha = 1 } @@ -78,7 +91,7 @@ class EstateController: UIViewController, ChartViewDelegate, CLLocationManagerDe let lineChartdataSet = LineChartDataSet(entries: lineChartDataEntries, label: "가격") lineChartdataSet.drawValuesEnabled = false lineChartdataSet.drawCirclesEnabled = false - lineChartdataSet.colors = [.blue] + lineChartdataSet.colors = [.systemBlue] //선택했을때 라인 지워주기 lineChartdataSet.drawHorizontalHighlightIndicatorEnabled = false lineChartdataSet.highlightColor = .white @@ -125,13 +138,12 @@ class EstateController: UIViewController, ChartViewDelegate, CLLocationManagerDe } private func setLineChartView(Areaname : String) { estateModel.requestStockPrice(EstateName: Areaname, onCompleted: { (pricelists, transctiontime) in - DispatchQueue.main.async { - self.view.addSubview(self.lineChartView) + let sortedtimeLists = transctiontime.sorted{$0.compare($1, options: .numeric) == .orderedAscending} self.pricelists = pricelists self.timeLists = sortedtimeLists self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: pricelists), xAxis: sortedtimeLists, recentPrice : Double(pricelists.last!)) - }})} + })} @@ -178,12 +190,27 @@ class EstateController: UIViewController, ChartViewDelegate, CLLocationManagerDe private lazy var segmentCtrl: UISegmentedControl = { let items = ["1주", "3달", "1년", "5년"] let seg = UISegmentedControl(items: items) + seg.addTarget(self, action: #selector(indexChanged(_:)), for: .valueChanged) seg.layer.cornerRadius = 5.0 seg.backgroundColor = UIColor(named: "dropdown") - seg.tintColor = .lightGray - seg.selectedSegmentTintColor = .white seg.selectedSegmentIndex = 1 + seg.selectedSegmentTintColor = .darkGray + + seg.setTitleTextAttributes( + [ + NSAttributedString.Key.foregroundColor: UIColor.white, + .font: UIFont(name: "NanumSquareEB", size: 14.0) + ], + for: .selected + ) + seg.setTitleTextAttributes( + [ + NSAttributedString.Key.foregroundColor: UIColor.systemGray, + .font: UIFont(name: "NanumSquareEB", size: 14.0) + ], + for: .normal + ) return seg }() @@ -220,6 +247,9 @@ class EstateController: UIViewController, ChartViewDelegate, CLLocationManagerDe override func viewDidLoad() { super.viewDidLoad() + + self.view.addSubview(self.lineChartView) + mapView.touchDelegate = self searchBar.delegate = self configure() @@ -228,7 +258,7 @@ class EstateController: UIViewController, ChartViewDelegate, CLLocationManagerDe getEstateList(name: Areaname) getAreaList() input() - setLineChartView(Areaname: Areaname) + //setLineChartView(Areaname: Areaname) view.backgroundColor = .black } @@ -317,6 +347,7 @@ class EstateController: UIViewController, ChartViewDelegate, CLLocationManagerDe //MARK: - EstateList + var idxLists = [Int]() var nameLists = [String]() var rateOfChange = [Double]() var rateCalDateDiff = [String]() @@ -336,6 +367,7 @@ class EstateController: UIViewController, ChartViewDelegate, CLLocationManagerDe do { for index in 0..= yearagodate{ + // estimateDate = k + // break + // } + // } + // let firstindex = timeLists.firstIndex(of: estimateDate!)! + // temptimeListDatas = Array(timeLists.dropFirst(firstindex)) + // temppriceListDatas = Array(pricelists.dropFirst(firstindex)) + // self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: temppriceListDatas), xAxis: temptimeListDatas, recentPrice : Double(temppriceListDatas.last!)) + case 1: + let daypricedata : [Int] = pricelists.suffix(90) + let daytimeListDatas : [String] = timeLists.suffix(90) + self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: daypricedata), xAxis: daytimeListDatas, recentPrice : Double(daypricedata.last!)) + // let yearagoday = Calendar.current.date(byAdding: .day, value: -90, to: todayDate)! + // let yearagodate = dateFormatter.string(from: yearagoday) + // var estimateDate : String? + // for k in self.timeLists { + // if k >= yearagodate{ + // estimateDate = k + // break + // } + // } + // let firstindex = timeLists.firstIndex(of: estimateDate!)! + // temptimeListDatas = Array(timeLists.dropFirst(firstindex)) + // temppriceListDatas = Array(pricelists.dropFirst(firstindex)) + // self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: temppriceListDatas), xAxis: temptimeListDatas, recentPrice : Double(temppriceListDatas.last!)) + case 2: + let daypricedata : [Int] = pricelists.suffix(360) + let daytimeListDatas : [String] = timeLists.suffix(360) + self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: daypricedata), xAxis: daytimeListDatas, recentPrice : Double(daypricedata.last!)) + // let yearagoday = Calendar.current.date(byAdding: .day, value: -365, to: todayDate)! + // let yearagodate = dateFormatter.string(from: yearagoday) + // var estimateDate : String? + // for k in self.timeLists { + // if k >= yearagodate{ + // estimateDate = k + // break + // } + // } + // let firstindex = timeLists.firstIndex(of: estimateDate!)! + // temptimeListDatas = Array(timeLists.dropFirst(firstindex)) + // temppriceListDatas = Array(pricelists.dropFirst(firstindex)) + // self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: temppriceListDatas), xAxis: temptimeListDatas, recentPrice : Double(temppriceListDatas.last!)) + case 3: + let daypricedata : [Int] = pricelists.suffix(1000) + let daytimeListDatas : [String] = timeLists.suffix(1000) + self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: daypricedata), xAxis: daytimeListDatas, recentPrice : Double(daypricedata.last!)) + // let yearagoday = Calendar.current.date(byAdding: .day, value: -1200, to: todayDate)! + // let yearagodate = dateFormatter.string(from: yearagoday) + // var estimateDate : String? + // for k in self.timeLists { + // if k >= yearagodate{ + // estimateDate = k + // break + // } + // } + // let firstindex = timeLists.firstIndex(of: estimateDate!)! + // temptimeListDatas = Array(timeLists.dropFirst(firstindex)) + // temppriceListDatas = Array(pricelists.dropFirst(firstindex)) + // self.setLineData(lineChartView: self.lineChartView, lineChartDataEntries: self.entryData( yvalues: temppriceListDatas), xAxis: temptimeListDatas, recentPrice : Double(temppriceListDatas.last!)) default: break } @@ -585,9 +680,9 @@ class EstateController: UIViewController, ChartViewDelegate, CLLocationManagerDe guard let cell = tableView.dequeueReusableCell(withIdentifier: EstateSaleCell.identifier, for: indexPath) as? EstateSaleCell else { return UITableViewCell() } cell.number.font = UIFont(name: "NanumSquareB", size: 13) - cell.title.font = UIFont(name: "NanumSquareB", size: 13) + cell.title.font = UIFont(name: "NanumSquareEB", size: 13) cell.area.font = UIFont(name: "NanumSquareB", size: 13) - cell.pow.font = UIFont(name: "NanumSquareB", size: 13) + cell.pow.font = UIFont(name: "NanumSquareEB", size: 13) cell.price.font = UIFont(name: "NanumSquareB", size: 13) cell.period.font = UIFont(name: "NanumSquareB", size: 13) @@ -596,7 +691,9 @@ class EstateController: UIViewController, ChartViewDelegate, CLLocationManagerDe cell.number.textColor = .white cell.title.text = self.nameLists[indexPath.row] cell.title.textColor = .white - cell.area.text = "\(self.price[indexPath.row])원/m" + cell.area.text = String(self.price[indexPath.row].withCommas())+"원/m" + + cell.area.textColor = .gray cell.pow.text = "2" cell.pow.textColor = .gray @@ -609,6 +706,8 @@ class EstateController: UIViewController, ChartViewDelegate, CLLocationManagerDe cell.period.text = self.rateCalDateDiff[indexPath.row] cell.period.textColor = .gray + cell.selectionStyle = .none + return cell } @@ -619,18 +718,30 @@ class EstateController: UIViewController, ChartViewDelegate, CLLocationManagerDe return cell } } + + // cell row 선택 시 옵션 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { if tableView == tableView1{ + let estateChartVc = EstateChartViewController() + + estateChartVc.idx = self.idxLists[indexPath.row] + estateChartVc.nameText = self.nameLists[indexPath.row] + estateChartVc.changeDateText = "\(self.price[indexPath.row])" + estateChartVc.pricePercentText = "\(self.rateOfChange[indexPath.row])%" + + self.navigationController?.pushViewController(estateChartVc, animated: true) + } else{ - tableView2.deselectRow(at: indexPath, animated: true) print(self.items[indexPath.row]) self.searchBar.searchTextField.text = self.items[indexPath.row] geocodeget(cityName: self.searchBar.searchTextField.text!) + view.endEditing(true) tableView2.alpha = 0 + self.setLineChartView(Areaname:self.searchBar.searchTextField.text!) } } diff --git a/LGHTSG/LGHTSG/View/ExploreVC/StockView.swift b/LGHTSG/LGHTSG/View/ExploreVC/StockView.swift index b40538b..a37ff18 100644 --- a/LGHTSG/LGHTSG/View/ExploreVC/StockView.swift +++ b/LGHTSG/LGHTSG/View/ExploreVC/StockView.swift @@ -11,7 +11,7 @@ class StockView : UIViewController { var delegate : showNavigationDelegate? lazy private var segment : UISegmentedControl = { let control = UnderlineSegmentedControl(items: ["급상승", "급하락", "거래량", "시가총액"]) - control.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.darkGray, .font : UIFont.systemFont(ofSize: 16, weight: .semibold)], for: .normal) + control.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.darkGray, .font : UIFont(name: "NanumSquareEB", size: 16)], for: .normal) control.selectedSegmentIndex = 0 AssetModel.requestTableCellModel(segmentIndex: 0){ data in @@ -20,6 +20,8 @@ class StockView : UIViewController { } return control }() + + let AssetModel = TableCellModel() var stockDataLists = [asset.body]() var stockSearchLists = [asset.body]() diff --git a/LGHTSG/LGHTSG/View/ExploreVC/TopViewController.swift b/LGHTSG/LGHTSG/View/ExploreVC/TopViewController.swift index b501b47..7dbf644 100644 --- a/LGHTSG/LGHTSG/View/ExploreVC/TopViewController.swift +++ b/LGHTSG/LGHTSG/View/ExploreVC/TopViewController.swift @@ -215,9 +215,9 @@ class TopViewController: UIViewController, UITableViewDelegate, UITableViewDataS guard let cell = tableView.dequeueReusableCell(withIdentifier: TopViewCell.identifier, for: indexPath) as? TopViewCell else { return UITableViewCell() } cell.number.font = UIFont(name: "NanumSquareB", size: 15.0) - cell.title.font = UIFont(name: "NanumSquareEB", size: 15.0) + cell.title.font = UIFont(name: "NanumSquareEB", size: 14.0) cell.price.font = UIFont(name: "NanumSquareB", size: 12.0) - cell.percentage.font = UIFont(name: "NanumSquareB", size: 12.0) + cell.percentage.font = UIFont(name: "NanumSquareEB", size: 12.0) cell.period.font = UIFont(name: "NanumSquareB", size: 12.0) //let rurl = URL(string: riconList[indexPath.row]) @@ -228,8 +228,11 @@ class TopViewController: UIViewController, UITableViewDelegate, UITableViewDataS cell.number.text = String(indexPath.row + 1) cell.iconImage.kf.setImage(with: URL(string: AreaDataLists[indexPath.row].iconImage)) cell.title.text = AreaDataLists[indexPath.row].name - cell.price.text = "\(AreaDataLists[indexPath.row].price)원/m" cell.percentage.text = "\(AreaDataLists[indexPath.row].rateOfChange)%" + cell.price.text = String(AreaDataLists[indexPath.row].price.withCommas())+"원/m2" + + + if AreaDataLists[indexPath.row].rateOfChange > 0 { cell.percentage.textColor = .systemRed }else{ @@ -243,8 +246,12 @@ class TopViewController: UIViewController, UITableViewDelegate, UITableViewDataS cell.number.text = String(indexPath.row + 1) cell.iconImage.kf.setImage(with: URL(string: stockDataLists[indexPath.row].iconImage)) cell.title.text = stockDataLists[indexPath.row].name - cell.price.text = "\(stockDataLists[indexPath.row].price)원" cell.percentage.text = "\(stockDataLists[indexPath.row].rateOfChange)%" + cell.price.text = String(stockDataLists[indexPath.row].price.withCommas())+"원" + + + + if stockDataLists[indexPath.row].rateOfChange > 0 { cell.percentage.textColor = .systemRed }else{ @@ -259,8 +266,11 @@ class TopViewController: UIViewController, UITableViewDelegate, UITableViewDataS cell.number.text = String(indexPath.row + 1) cell.iconImage.kf.setImage(with: URL(string: resellDataLists[indexPath.row].imageUrl)) cell.title.text = resellDataLists[indexPath.row].name - cell.price.text = "\(resellDataLists[indexPath.row].price)원" cell.percentage.text = "\(resellDataLists[indexPath.row].rateOfChange)%" + cell.price.text = String(resellDataLists[indexPath.row].price.withCommas())+"원" + + + if resellDataLists[indexPath.row].rateOfChange > 0 { cell.percentage.textColor = .systemRed }else{ diff --git a/LGHTSG/LGHTSG/View/ExploreVC/TopViewDetailController.swift b/LGHTSG/LGHTSG/View/ExploreVC/TopViewDetailController.swift index 292730d..0615f87 100644 --- a/LGHTSG/LGHTSG/View/ExploreVC/TopViewDetailController.swift +++ b/LGHTSG/LGHTSG/View/ExploreVC/TopViewDetailController.swift @@ -83,7 +83,17 @@ class TopViewDetailController: UIViewController, UITableViewDelegate, UITableVie stockChartVC.idx = stockDataLists[indexPath.row].idx self.navigationController?.pushViewController(stockChartVC, animated: true) } - else if label.text! == "#어제 급등한 리셀"{} + else if label.text! == "#어제 급등한 리셀"{ + + let resellchartVC = ReSellChartViewController() + resellchartVC.nameText = resellDataLists[indexPath.row].name + resellchartVC.changeDateText = resellDataLists[indexPath.row].rateCalDateDiff + resellchartVC.pricePercentText = "\(resellDataLists[indexPath.row].rateOfChange)%" + resellchartVC.idx = resellDataLists[indexPath.row].idx + resellchartVC.imageURL = resellDataLists[indexPath.row].imageUrl + self.navigationController?.pushViewController(resellchartVC, animated: true) + + } } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { @@ -91,13 +101,13 @@ class TopViewDetailController: UIViewController, UITableViewDelegate, UITableVie cell.number.font = UIFont(name: "NanumSquareB", size: 15.0) cell.title.font = UIFont(name: "NanumSquareEB", size: 15.0) cell.price.font = UIFont(name: "NanumSquareB", size: 12.0) - cell.percentage.font = UIFont(name: "NanumSquareB", size: 12.0) + cell.percentage.font = UIFont(name: "NanumSquareEB", size: 12.0) cell.period.font = UIFont(name: "NanumSquareB", size: 12.0) if label.text! == "#강남구 집값 Top 10"{ cell.number.text = String(indexPath.row + 1) cell.iconImage.kf.setImage(with: URL(string: estateDataLists[indexPath.row].iconImage)) cell.title.text = self.estateDataLists[indexPath.row].name - cell.price.text = "\(self.estateDataLists[indexPath.row].price)원/m" + cell.price.text = "\(self.estateDataLists[indexPath.row].price.withCommas())원/m2" cell.percentage.text = "\(self.estateDataLists[indexPath.row].rateOfChange)%" if estateDataLists[indexPath.row].rateOfChange > 0 { cell.percentage.textColor = .systemRed @@ -112,7 +122,7 @@ class TopViewDetailController: UIViewController, UITableViewDelegate, UITableVie cell.number.text = String(indexPath.row + 1) cell.iconImage.kf.setImage(with: URL(string: stockDataLists[indexPath.row].iconImage)) cell.title.text = self.stockDataLists[indexPath.row].name - cell.price.text = "\(self.stockDataLists[indexPath.row].price)원" + cell.price.text = "\(self.stockDataLists[indexPath.row].price.withCommas())원" cell.percentage.text = "\(self.stockDataLists[indexPath.row].rateOfChange)%" if stockDataLists[indexPath.row].rateOfChange > 0 { cell.percentage.textColor = .systemRed @@ -127,7 +137,7 @@ class TopViewDetailController: UIViewController, UITableViewDelegate, UITableVie cell.number.text = String(indexPath.row + 1) cell.iconImage.kf.setImage(with: URL(string: resellDataLists[indexPath.row].imageUrl)) cell.title.text = self.resellDataLists[indexPath.row].name - cell.price.text = "\(self.resellDataLists[indexPath.row].price)원/m" + cell.price.text = "\(self.resellDataLists[indexPath.row].price.withCommas())원" cell.percentage.text = "\(self.resellDataLists[indexPath.row].rateOfChange)%" if resellDataLists[indexPath.row].rateOfChange > 0 { cell.percentage.textColor = .systemRed diff --git a/LGHTSG/LGHTSG/View/ExploreVC/resellView.swift b/LGHTSG/LGHTSG/View/ExploreVC/resellView.swift index 9b2cfe3..755c2f4 100644 --- a/LGHTSG/LGHTSG/View/ExploreVC/resellView.swift +++ b/LGHTSG/LGHTSG/View/ExploreVC/resellView.swift @@ -20,7 +20,7 @@ class resellView : UIViewController{ var resellSearchLists = [resellData.body]() lazy private var segment : UISegmentedControl = { let control = UnderlineSegmentedControl(items: ["급상승", "급하락"]) - control.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.darkGray, .font : UIFont.systemFont(ofSize: 16, weight: .semibold)], for: .normal) + control.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.darkGray, .font : UIFont(name: "NanumSquareEB", size: 16)], for: .normal) control.selectedSegmentIndex = 0 AssetModel.requestResellModel(segmentIndex: 0){ data in @@ -44,6 +44,7 @@ class resellView : UIViewController{ resellTableView.delegate = self segment.addTarget(self, action: #selector(clickSegment), for: .valueChanged) } + //segment이벤트 받아서 급상승, 급하락, 거래량 @objc func clickSegment(_ sender : UISegmentedControl){ switch sender.selectedSegmentIndex { @@ -65,11 +66,12 @@ class resellView : UIViewController{ required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } + func setView() { resellTableView.register(HomeTableCell.self, forCellReuseIdentifier: "HomeTabeCell") resellTableView.separatorStyle = .none - resellTableView.backgroundColor = .black + self.view.addSubview(segment) segment.snp.makeConstraints{ $0.leading.top.equalToSuperview() @@ -90,17 +92,22 @@ extension resellView : UITableViewDataSource , UITableViewDelegate, UIScrollView }else{ return resellDataLists.count }} func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + guard let cell = tableView.dequeueReusableCell(withIdentifier: "HomeTabeCell", for: indexPath) as? HomeTableCell else {return UITableViewCell()} + if(ExploreViewController.isSearching){ cell.setup(with: resellSearchLists[indexPath.row]) }else{ cell.setup(with: resellDataLists[indexPath.row])} + + cell.countLabel.text = "\(indexPath.row+1)" cell.selectionStyle = .none return cell } + func scrollViewDidScroll(_ scrollView: UIScrollView) { if resellTableView.contentOffset.y < 0 { delegate?.showSearchBar() @@ -109,24 +116,24 @@ extension resellView : UITableViewDataSource , UITableViewDelegate, UIScrollView delegate?.hideSearchBar() } } + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let ChartVc = ReSellChartViewController() - if(ExploreViewController.isSearching){ ChartVc.nameText = resellSearchLists[indexPath.row].name ChartVc.changeDateText = resellSearchLists[indexPath.row].rateCalDateDiff ChartVc.pricePercentText = "\(resellSearchLists[indexPath.row].rateOfChange)%" - ChartVc.PriceText = "\(String(resellSearchLists[indexPath.row].price))원" + ChartVc.PriceText = "\(String(resellSearchLists[indexPath.row].price.withCommas()))원" ChartVc.idx = resellSearchLists[indexPath.row].idx ChartVc.imageURL = resellSearchLists[indexPath.row].imageUrl - + }else{ ChartVc.nameText = resellDataLists[indexPath.row].name ChartVc.changeDateText = resellDataLists[indexPath.row].rateCalDateDiff ChartVc.pricePercentText = "\(resellDataLists[indexPath.row].rateOfChange)%" - ChartVc.PriceText = "\(String(resellDataLists[indexPath.row].price))원" + ChartVc.PriceText = "\(String(resellDataLists[indexPath.row].price.withCommas()))원" ChartVc.idx = resellDataLists[indexPath.row].idx ChartVc.imageURL = resellDataLists[indexPath.row].imageUrl } diff --git a/LGHTSG/LGHTSG/View/FindPwView.swift b/LGHTSG/LGHTSG/View/FindPwView.swift index 26e7b5e..4ecfcf1 100644 --- a/LGHTSG/LGHTSG/View/FindPwView.swift +++ b/LGHTSG/LGHTSG/View/FindPwView.swift @@ -554,13 +554,14 @@ class FindPwView: UIView { // MARK: 비밀번호 변경 버튼 self.nextBtnImageView2.snp.makeConstraints{ - $0.bottom.equalToSuperview().offset(-50) + + $0.top.equalTo(pwCheckImageView.snp.bottom).offset(30) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) } self.pwChangeBtn.snp.makeConstraints{ - $0.top.equalTo(nextBtnImageView2).offset(10) + $0.top.equalTo(pwCheckImageView.snp.bottom).offset(10) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) } diff --git a/LGHTSG/LGHTSG/View/HomeVC/HomeTableCell.swift b/LGHTSG/LGHTSG/View/HomeVC/HomeTableCell.swift index 727db1e..d524057 100644 --- a/LGHTSG/LGHTSG/View/HomeVC/HomeTableCell.swift +++ b/LGHTSG/LGHTSG/View/HomeVC/HomeTableCell.swift @@ -4,11 +4,12 @@ // // Created by SunHo Lee on 2023/01/14. // - +import MarqueeLabel import Foundation import UIKit import SnapKit import Kingfisher + class HomeTableCell : UITableViewCell { var countLabel : UILabel = { let label = UILabel() @@ -19,7 +20,7 @@ class HomeTableCell : UITableViewCell { private lazy var nameLabel : UILabel = { let label = UILabel() - label.font = UIFont(name: "NanumSquareB", size: 14.0) + label.font = UIFont(name: "NanumSquareEB", size: 14.0) label.textColor = .white return label }() @@ -57,23 +58,17 @@ extension HomeTableCell { addSubview($0) } - nameLabel.font = UIFont(name: "NanumSquareB", size: 13) - priceLabel.font = UIFont(name: "NanumSquareB", size: 13) - changeDate.font = UIFont(name: "NanumSquareB", size: 13) - pricePercent.font = UIFont(name: "NanumSquareB", size: 13) - - nameLabel.text = assetinfo.name - priceLabel.text = String(assetinfo.price)+"원" + priceLabel.text = String(assetinfo.price.withCommas())+"원" changeDate.text = assetinfo.rateCalDateDiff let stringofratechange = String(assetinfo.rateOfChange) if(stringofratechange[stringofratechange.startIndex] == "-"){ pricePercent.text = "\(stringofratechange)%" - pricePercent.textColor = .blue + pricePercent.textColor = .systemBlue }else { pricePercent.text = "+\(stringofratechange)%" - pricePercent.textColor = .red + pricePercent.textColor = .systemRed } let url = URL(string: assetinfo.iconImage) iconimage.clipsToBounds = true @@ -105,7 +100,7 @@ extension HomeTableCell { $0.top.equalTo(priceLabel.snp.top) } pricePercent.snp.makeConstraints{ - $0.leading.equalTo(priceLabel.snp.trailing).offset(15) + $0.leading.equalTo(priceLabel.snp.trailing).offset(8) $0.top.equalTo(priceLabel.snp.top) } } @@ -118,23 +113,19 @@ extension HomeTableCell { } - - nameLabel.font = UIFont(name: "NanumSquareB", size: 13) - priceLabel.font = UIFont(name: "NanumSquareB", size: 13) - changeDate.font = UIFont(name: "NanumSquareB", size: 13) - pricePercent.font = UIFont(name: "NanumSquareB", size: 13) + nameLabel.text = resellinfo.name - priceLabel.text = String(resellinfo.price)+"원" + priceLabel.text = String(resellinfo.price.withCommas())+"원" changeDate.text = resellinfo.rateCalDateDiff let stringofratechange = String( resellinfo.rateOfChange) if(stringofratechange[stringofratechange.startIndex] == "-"){ pricePercent.text = "\(stringofratechange)%" - pricePercent.textColor = .blue + pricePercent.textColor = .systemBlue }else { pricePercent.text = "+\(stringofratechange)%" - pricePercent.textColor = .red + pricePercent.textColor = .systemRed } let url = URL(string: resellinfo.imageUrl) @@ -171,7 +162,7 @@ extension HomeTableCell { $0.top.equalTo(priceLabel.snp.top) } pricePercent.snp.makeConstraints{ - $0.trailing.equalTo(changeDate.snp.leading).offset(-15) + $0.leading.equalTo(priceLabel.snp.trailing).offset(8) $0.top.equalTo(priceLabel.snp.top) } } @@ -180,17 +171,17 @@ extension HomeTableCell { addSubview($0) } nameLabel.text = home.assetName - priceLabel.text = String(home.price)+"원" + priceLabel.text = String(home.price.withCommas())+"원" changeDate.text = home.rateCalDateDiff pricePercent.text = String(home.rateOfChange) let url = URL(string: home.iconImage) let stringofratechange = String(home.rateOfChange) if(stringofratechange[stringofratechange.startIndex] == "-"){ pricePercent.text = "\(stringofratechange)%" - pricePercent.textColor = .blue + pricePercent.textColor = .systemBlue }else { pricePercent.text = "+\(stringofratechange)%" - pricePercent.textColor = .red + pricePercent.textColor = .systemRed } // kf 이미지 둥그렇 iconimage.clipsToBounds = true @@ -213,17 +204,24 @@ extension HomeTableCell { $0.top.equalToSuperview() } priceLabel.snp.makeConstraints{ - $0.leading.equalTo(nameLabel.snp.leading) $0.top.equalTo(nameLabel.snp.bottom).offset(5) + $0.leading.equalTo(nameLabel.snp.leading) } changeDate.snp.makeConstraints{ - $0.trailing.equalToSuperview().inset(40) + $0.trailing.equalToSuperview().inset(20) $0.top.equalTo(pricePercent.snp.top) } pricePercent.snp.makeConstraints{ - $0.trailing.equalTo(changeDate.snp.leading).offset(-15) + $0.leading.equalTo(priceLabel.snp.trailing).offset(8) $0.top.equalTo(priceLabel.snp.top) } } } +extension Int { + func withCommas() -> String { + let numberFormatter = NumberFormatter() + numberFormatter.numberStyle = .decimal + return numberFormatter.string(from: NSNumber(value:self))! + } +} diff --git a/LGHTSG/LGHTSG/View/HomeVC/StockDateSegmentControl.swift b/LGHTSG/LGHTSG/View/HomeVC/StockDateSegmentControl.swift index 2b6316c..44720b7 100644 --- a/LGHTSG/LGHTSG/View/HomeVC/StockDateSegmentControl.swift +++ b/LGHTSG/LGHTSG/View/HomeVC/StockDateSegmentControl.swift @@ -4,26 +4,27 @@ // // Created by SunHo Lee on 2023/01/19. // +//b import Foundation import UIKit final class StockDateSegmentControl : UnderlineSegmentedControl{ - + override func removeBackgroundAndDivider() { super.removeBackgroundAndDivider() self.backgroundColor = .darkGray self.setTitleTextAttributes( [ NSAttributedString.Key.foregroundColor: UIColor.lightGray, - .font: UIFont.systemFont(ofSize: 16, weight: .semibold) + .font: UIFont(name: "NanumSquareEB", size: 14.0) ], for: .normal ) self.setTitleTextAttributes( [ - NSAttributedString.Key.foregroundColor: UIColor.tintColor, - .font: UIFont.systemFont(ofSize: 16, weight: .semibold) + NSAttributedString.Key.foregroundColor: UIColor.white, + .font: UIFont(name: "NanumSquareEB", size: 14.0) ], for: .selected ) diff --git a/LGHTSG/LGHTSG/View/HomeVC/UnderlineSegmentedControl.swift b/LGHTSG/LGHTSG/View/HomeVC/UnderlineSegmentedControl.swift index 3fcc578..1ea6ecb 100644 --- a/LGHTSG/LGHTSG/View/HomeVC/UnderlineSegmentedControl.swift +++ b/LGHTSG/LGHTSG/View/HomeVC/UnderlineSegmentedControl.swift @@ -11,16 +11,19 @@ class UnderlineSegmentedControl: UISegmentedControl { super.init(frame: frame) self.removeBackgroundAndDivider() } + + + override init(items: [Any]?) { super.init(items: items) self.removeBackgroundAndDivider() self.selectedSegmentIndex = 0 - self.setTitleTextAttributes([NSAttributedString.Key.font : UIFont.systemFont(ofSize: 16, weight: .semibold)], for: .normal) - self.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.white, .font : UIFont.systemFont(ofSize: 16, weight: .semibold)], for: .normal) + self.setTitleTextAttributes([NSAttributedString.Key.font : UIFont(name: "NanumSquareB", size: 16.0)], for: .normal) + self.setTitleTextAttributes([NSAttributedString.Key.foregroundColor : UIColor.white, .font : UIFont(name: "NanumSquareB", size: 16.0)], for: .normal) self.setTitleTextAttributes( [ NSAttributedString.Key.foregroundColor: UIColor.white, - .font: UIFont.systemFont(ofSize: 16, weight: .bold) + .font: UIFont(name: "NanumSquareB", size: 16.0) ], for: .selected ) diff --git a/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckAgreeView.swift b/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckAgreeView.swift index 977c7c2..f11ac1e 100644 --- a/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckAgreeView.swift +++ b/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckAgreeView.swift @@ -350,12 +350,12 @@ class CheckAgreeView: UIView { // MARK: 모두 동의하기 self.checkBox.snp.makeConstraints{ - $0.top.equalTo(agreeLabel.snp.bottom).offset(50) + $0.top.equalTo(agreeLabel.snp.bottom).offset(30) $0.left.equalToSuperview().offset(20) } self.allAgreeLabel.snp.makeConstraints{ - $0.top.equalTo(agreeLabel.snp.bottom).offset(55) + $0.top.equalTo(agreeLabel.snp.bottom).offset(35) $0.left.equalTo(checkBox.snp.right).offset(20) } @@ -416,14 +416,14 @@ class CheckAgreeView: UIView { // MARK: 다음으로 버튼 self.nextBtnImageView2.snp.makeConstraints{ - $0.bottom.equalToSuperview().offset(-10) + $0.bottom.equalToSuperview().offset(-50) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) } self.nextBtn2.snp.makeConstraints{ - $0.top.equalTo(nextBtnImageView2).offset(10) + $0.top.equalTo(nextBtnImageView2.snp.top).offset(10) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) diff --git a/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckPageMarketingView.swift b/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckPageMarketingView.swift index 2b5c754..282ac68 100644 --- a/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckPageMarketingView.swift +++ b/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckPageMarketingView.swift @@ -77,13 +77,13 @@ class CheckPageMarketingView: UIView { } self.nextBtnImageView5.snp.makeConstraints{ - $0.bottom.equalToSuperview().offset(-10) + $0.bottom.equalToSuperview().offset(-50) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) } self.nextLabel5.snp.makeConstraints{ - $0.top.equalTo(nextBtnImageView5).offset(10) + $0.top.equalTo(nextBtnImageView5.snp.top).offset(10) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) diff --git a/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckPagePrivacyView.swift b/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckPagePrivacyView.swift index d4fa957..6437b51 100644 --- a/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckPagePrivacyView.swift +++ b/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckPagePrivacyView.swift @@ -41,12 +41,43 @@ class CheckPagePrivacyView: UIView { return view }() + let contentScrollView : UIScrollView = { + let scrollView = UIScrollView() + scrollView.translatesAutoresizingMaskIntoConstraints = false + scrollView.backgroundColor = .clear + scrollView.showsVerticalScrollIndicator = true + return scrollView + }() + + func addSubview() { + + addSubview(textboxImageView3) + textboxImageView3.addSubview(contentScrollView) + contentScrollView.addSubview(textContentLabel2) + + NSLayoutConstraint.activate([ + contentScrollView.topAnchor.constraint(equalTo: textboxImageView3.topAnchor), + contentScrollView.leadingAnchor.constraint(equalTo: textboxImageView3.leadingAnchor, constant: 10), + contentScrollView.trailingAnchor.constraint(equalTo: textboxImageView3.trailingAnchor,constant: -10), + contentScrollView.heightAnchor.constraint(equalTo: textboxImageView3.heightAnchor, constant: 1000) + ]) + + + NSLayoutConstraint.activate([ + textContentLabel2.topAnchor.constraint(equalTo: contentScrollView.topAnchor, constant: 10), + textContentLabel2.leadingAnchor.constraint(equalTo: contentScrollView.leadingAnchor), + textContentLabel2.trailingAnchor.constraint(equalTo: contentScrollView.trailingAnchor), + textContentLabel2.bottomAnchor.constraint(equalTo: textboxImageView3.bottomAnchor) + ]) + } + + let textContentLabel2 : UILabel = { let label = UILabel() - label.text = "< 라고할때살걸 >('https://api.lghtsg.site'이하 '라고할때살걸')은(는) 「개인정보 보호법」 제30조에 따라 정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다\n\n제1조(개인정보의 처리목적)\n< 라고할때살걸 >(이)가 개인정보 보호법 제32조에 따라 등록․공개하는 개인정보파일의 처리목적은 다음과 같습니다.\n\n1. 개인정보 파일명 : 라고할때살걸 사용자 정보\n개인정보의 처리목적 : 서비스 기능 제공을 위한 사용자 구분\n수집방법 : 앱\n보유근거 : 서비스 기능 제공을 위한 사용자 구분\n보유기간 : 1년\n관련법령 : 신용정보의 수집/처리 및 이용 등에 관한 기록 : 3년\n\n\n제2조(처리하는 개인정보의 항목)\n\n① < 라고할때살걸 >은(는) 다음의 개인정보 항목을 처리하고 있습니다.\n\n1< 라고할때살걸 사용자 정보 >\n필수항목 : 이메일, 비밀번호, 로그인ID, 이름, 서비스 이용 기록, 쿠키\n선택항목 :\n 1. 개인정보분쟁조정위원회 : (국번없이) 1833-6972 (www.kopico.go.kr)\n" + label.text = "< 라고할때살걸 >('https://api.lghtsg.site'이하 '라고할때살걸')은(는) 「개인정보 보호법」 제30조에 따라 정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다\n\n제1조(개인정보의 처리목적)\n< 라고할때살걸 >(이)가 개인정보 보호법 제32조에 따라 등록․공개하는 개인정보파일의 처리목적은 다음과 같습니다.\n\n1. 개인정보 파일명 : 라고할때살걸 사용자 정보\n개인정보의 처리목적 : 서비스 기능 제공을 위한 사용자 구분\n수집방법 : 앱\n보유근거 : 서비스 기능 제공을 위한 사용자 구분\n보유기간 : 1년\n관련법령 : 신용정보의 수집/처리 및 이용 등에 관한 기록 : 3년\n\n\n제2조(처리하는 개인정보의 항목)\n\n① < 라고할때살걸 >은(는) 다음의 개인정보 항목을 처리하고 있습니다.\n\n1< 라고할때살걸 사용자 정보 >\n필수항목 : 이메일, 비밀번호, 로그인ID, 이름, 서비스 이용 기록, 쿠키\n선택항목 :\n 1. 개인정보분쟁조정위원회 : (국번없이) 1833-6972 (www.kopico.go.kr)\n안녕 스크롤뷰가 되는지 보러왔어어ㅓ엉어어어사용자 정보\n개인정보의 처리목적 : 서비스 기능 제공을 위한 사용자 구분\n수집방법 : 앱\n보유근거 : 서비스 기능 제공을 위한 사용자 구분\n보유기간 : 1년\n관련법령 : 신용정보의 수집/처리 및 이용 등에 관한 기록 : 3년\n\n\n제2조(처리하는 개인정보의 항목)\n\n① < 라고할때살걸 >은(는) 다음의 개인정보 항목을 처리하고 있습니다.\n\n1< 라고할때살걸 사용자 정보 >\n필수항목 : 이메일, 비밀번호, 로그인ID, 이름, 서비스 이용 기록, 쿠키\n선택항목 :\n 1. 개인정보분쟁조정위원회 : (국번없이) 1833-6972 (www.kopico.go.kr)\n안녕 스크롤뷰가 되는지 보러왔어어ㅓ엉어어어앱\n보유근거 : 서비스 기능 제공을 위한 사용자 구분\n보유기간 : 1년\n관련법령 : 신용정보의 수집/처리 및 이용 등에 관한 기록 : 3년\n\n\n제2조(처리하는 개인정보의 항목)\n\n① < 라고할때살걸 >은(는) 다음의 개인정보 항목을 처리하고 있습니다.\n\n1< 라고할때살걸 사용자 정보 >\n필수항목 : 이메일, 비밀번호, 로그인ID, 이름, 서비스 이용 기록, 쿠키\n선택항목 :\n 앱\n보유근거 : 서비스 기능 제공을 위한 사용자 구분\n보유기간 : 1년\n관련법령 : 신용정보의 수집/처리 및 이용 등에 관한 기록 : 3년\n\n\n제2조(처리하는 개인정보의 항목)\n\n① < 라고할때살걸 >은(는) 다음의 개인정보 항목을 처리하고 있습니다.\n\n1< 라고할때살걸 사용자 정보 >\n필수항목 : 이메일, 비밀번호, 로그인ID, 이름, 서비스 이용 기록, 쿠키\n선택항목 :\n 앱\n보유근거 : 서비스 기능 제공을 위한 사용자 구분\n보유기간 : 1년\n관련법령 : 신용정보의 수집/처리 및 이용 등에 관한 기록 : 3년\n\n\n제2조(처리하는 개인정보의 항목)\n\n① < 라고할때살걸 >은(는) 다음의 개인정보 항목을 처리하고 있습니다.\n\n1< 라고할때살걸 사용자 정보 >\n필수항목 : 이메일, 비밀번호, 로그인ID, 이름, 서비스 이용 기록, 쿠키\n선택항목 :\n 앱\n보유근거 : 서비스 기능 제공을 위한 사용자 구분\n보유기간 : 1년\n관련법령 : 신용정보의 수집/처리 및 이용 등에 관한 기록 : 3년\n\n\n제2조(처리하는 개인정보의 항목)\n\n① < 라고할때살걸 >은(는) 다음의 개인정보 항목을 처리하고 있습니다.\n\n1< 라고할때살걸 사용자 정보 >\n필수항목 : 이메일, 비밀번호, 로그인ID, 이름, 서비스 이용 기록, 쿠키\n선택항목 :\n 앱\n보유근거 : 서비스 기능 제공을 위한 사용자 구분\n보유기간 : 1년\n관련법령 : 신용정보의 수집/처리 및 이용 등에 관한 기록 : 3년\n\n\n제2조(처리하는 개인정보의 항목)\n\n① < 라고할때살걸 >은(는) 다음의 개인정보 항목을 처리하고 있습니다.\n\n1< 라고할때살걸 사용자 정보 >\n필수항목 : 이메일, 비밀번호, 로그인ID, 이름, 서비스 이용 기록, 쿠키\n선택항목 :\n 앱\n보유근거 : 서비스 기능 제공을 위한 사용자 구분\n보유기간 : 1년\n관련법령 : 신용정보의 수집/처리 및 이용 등에 관한 기록 : 3년\n\n\n제2조(처리하는 개인정보의 항목)\n\n① < 라고할때살걸 >은(는) 다음의 개인정보 항목을 처리하고 있습니다.\n\n1< 라고할때살걸 사용자 정보 >\n필수항목 : 이메일, 비밀번호, 로그인ID, 이름, 서비스 이용 기록, 쿠키\n선택항목 :\n " label.textColor = .white label.numberOfLines = 0 - label.font = UIFont(name: "NanumSquareR", size: 13.0) + label.font = UIFont(name: "NanumSquareB", size: 10.0) label.translatesAutoresizingMaskIntoConstraints = false return label }() @@ -72,11 +103,7 @@ class CheckPagePrivacyView: UIView { override init(frame: CGRect) { super.init(frame: frame) - - addSubview(textboxImageView3) - addSubview(textContentLabel2) - - textContentLabel2.addSubview(scrollView2) + addSubview() addSubview(nextBtnImageView4) addSubview(nextLabel4) @@ -85,33 +112,38 @@ class CheckPagePrivacyView: UIView { $0.top.equalToSuperview().offset(80) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) + $0.bottom.equalToSuperview().offset(-100) } - + +/* self.textContentLabel2.snp.makeConstraints{ $0.top.equalTo(textboxImageView3.snp.top).offset(20) $0.left.equalTo(textboxImageView3.snp.left).offset(20) $0.right.equalTo(textboxImageView3.snp.right).offset(-20) $0.bottom.equalTo(textboxImageView3.snp.bottom).offset(-20) } + */ self.nextBtnImageView4.snp.makeConstraints{ - $0.bottom.equalToSuperview().offset(-10) + $0.top.equalTo(textboxImageView3.snp.bottom).offset(10) + $0.bottom.equalToSuperview().offset(-50) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) } self.nextLabel4.snp.makeConstraints{ - $0.top.equalTo(nextBtnImageView4).offset(10) + $0.top.equalTo(nextBtnImageView4.snp.top).offset(5) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) } - + /* scrollView2.leadingAnchor.constraint(equalTo: textContentLabel2.leadingAnchor).isActive = true scrollView2.trailingAnchor.constraint(equalTo: textContentLabel2.trailingAnchor).isActive = true scrollView2.topAnchor.constraint(equalTo: textContentLabel2.bottomAnchor).isActive = true scrollView2.bottomAnchor.constraint(equalTo: textContentLabel2.bottomAnchor).isActive = true + */ } diff --git a/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckPageServiceView.swift b/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckPageServiceView.swift index 02dc539..efdda78 100644 --- a/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckPageServiceView.swift +++ b/LGHTSG/LGHTSG/View/JoinVC/CheckVc/CheckPageServiceView.swift @@ -80,13 +80,13 @@ class CheckPageServiceView: UIView { self.nextBtnImageView3.snp.makeConstraints{ - $0.bottom.equalToSuperview().offset(-10) + $0.bottom.equalToSuperview().offset(-50) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) } self.nextLabel3.snp.makeConstraints{ - $0.top.equalTo(nextBtnImageView3).offset(10) + $0.top.equalTo(nextBtnImageView3.snp.top).offset(10) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) diff --git a/LGHTSG/LGHTSG/View/JoinVC/RegisterView.swift b/LGHTSG/LGHTSG/View/JoinVC/RegisterView.swift index c4824d4..fa2e57b 100644 --- a/LGHTSG/LGHTSG/View/JoinVC/RegisterView.swift +++ b/LGHTSG/LGHTSG/View/JoinVC/RegisterView.swift @@ -512,13 +512,13 @@ class RegisterView : UIView { // MARK: 다음으로 버튼 self.nextBtnImageView.snp.makeConstraints{ - $0.bottom.equalToSuperview().offset(-10) + $0.bottom.equalToSuperview().offset(-50) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) } self.nextBtn.snp.makeConstraints{ - $0.top.equalTo(nextBtnImageView).offset(10) + $0.top.equalTo(nextBtnImageView.snp.bottom).offset(10) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) diff --git a/LGHTSG/LGHTSG/View/LoginView.swift b/LGHTSG/LGHTSG/View/LoginView.swift index eee371e..ca43146 100644 --- a/LGHTSG/LGHTSG/View/LoginView.swift +++ b/LGHTSG/LGHTSG/View/LoginView.swift @@ -102,7 +102,7 @@ class LoginView: UIViewController { let findPwBtn2: UIButton = { let btn = UIButton() - btn.setTitle("비밀번호 찾기", for: .normal) + btn.setTitle("비밀번호 변경", for: .normal) btn.setTitleColor(.white, for: .normal) btn.titleLabel?.font = UIFont(name: "NanumSquareR", size: 12.0) btn.translatesAutoresizingMaskIntoConstraints = false @@ -148,16 +148,11 @@ class LoginView: UIViewController { login.requestLoginDataModel(bodyData: bodyData){ data in -// self.jwt = data.accessToken - // print(data) - } - - /* - loginMsgCode.requestLoginDataModel(bodyData: bodyData){ - data in - print(data) + + self.jwt = data.accessToken + UserDefaults.standard.set(email, forKey: "email") + UserDefaults.standard.set(password, forKey: "email") } - */ var loginSuccess = UserDefaults.standard.bool(forKey: "loginSuccess") loginSuccess = UserDefaults.standard.bool(forKey: "loginSuccess") @@ -219,7 +214,7 @@ class LoginView: UIViewController { // MARK: 맨 위 이미지 위치 self.titleImageView2.snp.makeConstraints { - $0.top.equalToSuperview().offset(170) + $0.top.equalToSuperview().offset(150) $0.centerX.equalToSuperview() } @@ -235,7 +230,6 @@ class LoginView: UIViewController { $0.right.equalToSuperview().offset(-30) } - // MARK: 비밀번호 위치 및 배경 // 나중에 에러 메세지 위치랑 고려해서 바꿔야함 @@ -260,7 +254,7 @@ class LoginView: UIViewController { // MARK: 로그인 버튼 self.loginBtn2.snp.makeConstraints { - $0.top.equalTo(pwImageView.snp.bottom).offset(40) + $0.top.equalTo(pwImageView.snp.bottom).offset(33) $0.left.equalToSuperview().offset(30) $0.right.equalToSuperview().offset(-30) } @@ -282,18 +276,17 @@ class LoginView: UIViewController { $0.top.equalTo(loginBtn2.snp.bottom).offset(20) $0.left.equalTo(middleLabel2.snp.right).offset(20) } - - // MARK: 맨 밑 글자 위치 - self.memberInquiryLabel.snp.makeConstraints{ + self.privacyPolicyLabel.snp.makeConstraints{ $0.centerX.equalToSuperview() - $0.top.equalTo(privacyPolicyLabel.snp.bottom).offset(5) + $0.top.equalTo(findPwBtn2.snp.bottom).offset(30) + //$0.bottom.equalToSuperview().offset(-100) } - self.privacyPolicyLabel.snp.makeConstraints{ + // MARK: 맨 밑 글자 위치 + self.memberInquiryLabel.snp.makeConstraints{ $0.centerX.equalToSuperview() - $0.bottom.equalToSuperview().offset(-100) - + $0.top.equalTo(privacyPolicyLabel.snp.bottom).offset(5) } diff --git a/LGHTSG/LGHTSG/View/MyPageView.swift b/LGHTSG/LGHTSG/View/MyPageView.swift index 1c65ec2..8e8854b 100644 --- a/LGHTSG/LGHTSG/View/MyPageView.swift +++ b/LGHTSG/LGHTSG/View/MyPageView.swift @@ -27,7 +27,7 @@ class MyPageView : UIView { image.contentMode = .scaleToFill image.layer.borderColor = UIColor.clear.cgColor // 원형 이미지의 테두리 제거 image.clipsToBounds = true - image.image = UIImage(named: "profile") + image.image = UIImage(named: "profile-money") image.translatesAutoresizingMaskIntoConstraints = false return image }() @@ -71,7 +71,7 @@ class MyPageView : UIView { addSubview(logoutLine) self.profileImageView2.snp.makeConstraints { - $0.top.equalToSuperview().offset(100) + $0.top.equalToSuperview().offset(150) $0.centerX.equalToSuperview() } diff --git a/LGHTSG/LGHTSG/View/RankViewCell.swift b/LGHTSG/LGHTSG/View/RankViewCell.swift new file mode 100644 index 0000000..809d918 --- /dev/null +++ b/LGHTSG/LGHTSG/View/RankViewCell.swift @@ -0,0 +1,100 @@ +// +// RankViewCell.swift +// LGHTSG +// +// Created by HA on 2023/01/31. +// + +import UIKit + +class RankViewCell: UITableViewCell { + private enum Constant { + static let thumbnailSize = 70.0 + static let thumbnailCGSize = CGSize(width: Constant.thumbnailSize, height: Constant.thumbnailSize) + static let borderWidth = 2.0 + static let spacing = 4.0 + } + static let identifier = "RankViewCell" + + lazy var number: UILabel = { + let label = UILabel() + label.textColor = .white + return label + }() + + lazy var userName: UILabel = { + let label = UILabel() + label.textColor = .white + label.font = UIFont(name: "NanumSquareB", size: 14.0) + return label + }() + + lazy var userAsset: UILabel = { + let label = UILabel() + label.textColor = .lightGray + label.font = UIFont(name: "NanumSquareB", size: 14.0) + return label + }() + + lazy var transCount: UILabel = { + let label = UILabel() + label.textColor = .lightGray + label.font = UIFont(name: "NanumSquareR", size: 12.0) + return label + }() + + var iconImage = UIImageView() + + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + contentView.frame = contentView.frame.inset(by: UIEdgeInsets(top: 6, left: 6, bottom: 12, right: 6)) + /* self.containerView.layer.cornerRadius = 8 + self.containerView.layer.masksToBounds = true*/ + self.cellSetting() + + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func cellSetting() { + self.backgroundColor = .black + + [number, userName, userAsset, transCount, iconImage] + .forEach {contentView.addSubview($0)} + + + iconImage.clipsToBounds = true + iconImage.layer.cornerRadius = 16.5 + iconImage.snp.makeConstraints{ + + $0.leading.equalTo(number.snp.trailing).offset(15) + $0.top.equalToSuperview().inset(13) + $0.height.width.equalTo(33) + + } + + number.snp.makeConstraints { + $0.leading.equalToSuperview().inset(15) + $0.centerY.equalToSuperview() + } + + userName.snp.makeConstraints { + $0.leading.equalTo(iconImage.snp.trailing).offset(21) + $0.top.equalToSuperview().inset(15) + } + + userAsset.snp.makeConstraints { + $0.leading.equalTo(iconImage.snp.trailing).offset(21) + $0.top.equalTo(userName.snp.bottom).offset(5) + } + + + transCount.snp.makeConstraints { + $0.leading.equalTo(userAsset.snp.trailing).offset(21) + $0.top.equalTo(userName.snp.bottom).offset(5) + } + } +} diff --git a/LGHTSG/LGHTSG/View/StartView.swift b/LGHTSG/LGHTSG/View/StartView.swift index 68da637..6f0bbf5 100644 --- a/LGHTSG/LGHTSG/View/StartView.swift +++ b/LGHTSG/LGHTSG/View/StartView.swift @@ -33,7 +33,7 @@ class StartView: UIView { let findPwBtn: UIButton = { let btn = UIButton() - btn.setTitle("비밀번호 찾기", for: .normal) + btn.setTitle("비밀번호 변경", for: .normal) btn.setTitleColor(.white, for: .normal) btn.titleLabel?.font = UIFont(name: "NanumSquareR", size: 12.0) btn.translatesAutoresizingMaskIntoConstraints = false @@ -86,7 +86,7 @@ class StartView: UIView { // MARK: 맨 위 이미지 위치 self.titleImageView.snp.makeConstraints { - $0.top.equalToSuperview().offset(200) + $0.top.equalToSuperview().offset(280) $0.centerX.equalToSuperview() } @@ -94,7 +94,7 @@ class StartView: UIView { // MARK: 로그인 버튼 self.loginBtn.snp.makeConstraints { - $0.top.equalTo(titleImageView.snp.bottom).offset(100) + $0.top.equalTo(titleImageView.snp.bottom).offset(50) $0.centerX.equalToSuperview() $0.left.equalToSuperview().offset(30) $0.right.equalToSuperview().offset(-30) diff --git a/LGHTSG/LGHTSG/View/TopViewCell.swift b/LGHTSG/LGHTSG/View/TopViewCell.swift index 4dc47eb..63db26f 100644 --- a/LGHTSG/LGHTSG/View/TopViewCell.swift +++ b/LGHTSG/LGHTSG/View/TopViewCell.swift @@ -38,15 +38,15 @@ class TopViewCell: UITableViewCell { lazy var percentage: UILabel = { let label = UILabel() - label.textColor = .red - label.font = UIFont(name: "NanumSquareR", size: 12.0) + label.textColor = .systemRed + label.font = UIFont(name: "NanumSquareEB", size: 12.0) return label }() lazy var period: UILabel = { let label = UILabel() label.textColor = .gray - label.font = UIFont(name: "NanumSquareR", size: 12.0) + label.font = UIFont(name: "NanumSquareB", size: 12.0) return label }() @@ -120,8 +120,12 @@ class TopViewCell: UITableViewCell { } period.snp.makeConstraints { - $0.leading.equalTo(percentage.snp.trailing).offset(8) + $0.trailing.equalToSuperview().inset(20) $0.top.equalTo(title.snp.bottom).offset(5) } } } + + + + diff --git a/LGHTSG/LGHTSG/ViewController.swift b/LGHTSG/LGHTSG/ViewController.swift index a70d89a..ab1e90b 100644 --- a/LGHTSG/LGHTSG/ViewController.swift +++ b/LGHTSG/LGHTSG/ViewController.swift @@ -39,7 +39,7 @@ class ViewController: UIViewController { @objc func joinBtnClicked() { let vc = CheckAgreeController() - vc.modalPresentationStyle = .fullScreen + vc.modalPresentationStyle = .overFullScreen self.present(vc, animated: true) } diff --git a/LGHTSG/LGHTSG/ViewModel/AssetModel.swift b/LGHTSG/LGHTSG/ViewModel/AssetModel.swift index 1e1b21b..7efdadf 100644 --- a/LGHTSG/LGHTSG/ViewModel/AssetModel.swift +++ b/LGHTSG/LGHTSG/ViewModel/AssetModel.swift @@ -27,7 +27,7 @@ class AssetModel { guard let url = URL(string: urlString) else {return} let headers : HTTPHeaders = ["x-access-token" : token] let body : Parameters = [ - "transactionIdx" : transactionIdx, + "assetIdx" : transactionIdx, "category" : category ] AF.request(url, method: .patch, parameters: body, encoding: JSONEncoding.default, headers: headers ).responseDecodable(of: TradeDateError.self){ diff --git a/LGHTSG/LGHTSG/ViewModel/EstatePriceModel.swift b/LGHTSG/LGHTSG/ViewModel/EstatePriceModel.swift index 091d109..33b1108 100644 --- a/LGHTSG/LGHTSG/ViewModel/EstatePriceModel.swift +++ b/LGHTSG/LGHTSG/ViewModel/EstatePriceModel.swift @@ -11,7 +11,9 @@ class EstatePriceModel { var PriceLists : [Int] = [] var transactionTimeLists : [String] = [] func requestStockPrice(EstateName : String, onCompleted : @escaping([Int],[String]) -> Void){ - let urlString = "http://api.lghtsg.site:8090/realestates/prices?area=\(EstateName)" + PriceLists = [] + transactionTimeLists = [] + let urlString = "http://api.lghtsg.site:8090/realestates/prices?area=\(EstateName)" let encodedStr = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! let url = URL(string: encodedStr)! AF.request(url).responseDecodable(of: realEstates.self) { [weak self] response in diff --git a/LGHTSG/LGHTSG/ViewModel/RankingModel.swift b/LGHTSG/LGHTSG/ViewModel/RankingModel.swift new file mode 100644 index 0000000..0fe2792 --- /dev/null +++ b/LGHTSG/LGHTSG/ViewModel/RankingModel.swift @@ -0,0 +1,23 @@ +// +// RankingModel.swift +// LGHTSG +// +// Created by HA on 2023/02/11. +// + +import Foundation + +// MARK: - RankingModel +struct RankingModel: Codable { + let body: [zBody] +} + +// MARK: - Body +struct zBody: Codable { + let userIdx: Int + let userName: String + let userAsset: Int + // let profileImg: URL +} + + diff --git a/LGHTSG/LGHTSG/ViewModel/loginVM/LoginApiModel.swift b/LGHTSG/LGHTSG/ViewModel/loginVM/LoginApiModel.swift index fc1108d..a43f25f 100644 --- a/LGHTSG/LGHTSG/ViewModel/loginVM/LoginApiModel.swift +++ b/LGHTSG/LGHTSG/ViewModel/loginVM/LoginApiModel.swift @@ -30,7 +30,6 @@ class LoginApiModel { print("error") print(response.debugDescription) UserDefaults.standard.set(false, forKey: "loginSuccess") - } }