diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate index 9abdbfd..6305059 100644 --- a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate index 9abdbfd..6305059 100644 --- a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ diff --git a/Meterage/Cells/SampleCollectionViewCell.swift b/Meterage/Cells/SampleCollectionViewCell.swift new file mode 100644 index 0000000..63a1da3 --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.swift @@ -0,0 +1,21 @@ +// +// SampleCollectionViewCell.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class SampleCollectionViewCell: UICollectionViewCell { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var countView: UILabel! + @IBOutlet weak var titleView: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate index 9abdbfd..6305059 100644 --- a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ diff --git a/Meterage/Cells/SampleCollectionViewCell.swift b/Meterage/Cells/SampleCollectionViewCell.swift new file mode 100644 index 0000000..63a1da3 --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.swift @@ -0,0 +1,21 @@ +// +// SampleCollectionViewCell.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class SampleCollectionViewCell: UICollectionViewCell { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var countView: UILabel! + @IBOutlet weak var titleView: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Meterage/Cells/SampleCollectionViewCell.xib b/Meterage/Cells/SampleCollectionViewCell.xib new file mode 100644 index 0000000..e38646a --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate index 9abdbfd..6305059 100644 --- a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ diff --git a/Meterage/Cells/SampleCollectionViewCell.swift b/Meterage/Cells/SampleCollectionViewCell.swift new file mode 100644 index 0000000..63a1da3 --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.swift @@ -0,0 +1,21 @@ +// +// SampleCollectionViewCell.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class SampleCollectionViewCell: UICollectionViewCell { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var countView: UILabel! + @IBOutlet weak var titleView: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Meterage/Cells/SampleCollectionViewCell.xib b/Meterage/Cells/SampleCollectionViewCell.xib new file mode 100644 index 0000000..e38646a --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/Utils/Constant.swift b/Meterage/Utils/Constant.swift index a39de1a..464e70d 100644 --- a/Meterage/Utils/Constant.swift +++ b/Meterage/Utils/Constant.swift @@ -21,6 +21,8 @@ let MINE_TITLE_ARRAY = ["账户信息", "我的收藏", "推送设置", "隐私设置", "使用帮助", "版本更新", "关于APP", "意见反馈"] let MINE_IMAGE_ARRAY = ["account", "collection", "push_setting", "privacy_setting", "help", "update", "about", "feed_back"] let HOME_FUNC_OPERATE = ["仪器设备", "标准装置", "证书报告", "委托需求", "访客", "标准规范", "能力列表", "计量培训", "合同发票", "业务统计", "客户列表", "外场检测"] +let SAMPLE_TITLE_ARRAY = ["已超期", "已检定", "检定总计", "样品总数"] +let SAMPLE_IMAGE_ARRAY = ["overtime", "verified", "total_verify", "total_sample"] public enum Constant: String { // 网络请求相关的地址 diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate index 9abdbfd..6305059 100644 --- a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ diff --git a/Meterage/Cells/SampleCollectionViewCell.swift b/Meterage/Cells/SampleCollectionViewCell.swift new file mode 100644 index 0000000..63a1da3 --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.swift @@ -0,0 +1,21 @@ +// +// SampleCollectionViewCell.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class SampleCollectionViewCell: UICollectionViewCell { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var countView: UILabel! + @IBOutlet weak var titleView: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Meterage/Cells/SampleCollectionViewCell.xib b/Meterage/Cells/SampleCollectionViewCell.xib new file mode 100644 index 0000000..e38646a --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/Utils/Constant.swift b/Meterage/Utils/Constant.swift index a39de1a..464e70d 100644 --- a/Meterage/Utils/Constant.swift +++ b/Meterage/Utils/Constant.swift @@ -21,6 +21,8 @@ let MINE_TITLE_ARRAY = ["账户信息", "我的收藏", "推送设置", "隐私设置", "使用帮助", "版本更新", "关于APP", "意见反馈"] let MINE_IMAGE_ARRAY = ["account", "collection", "push_setting", "privacy_setting", "help", "update", "about", "feed_back"] let HOME_FUNC_OPERATE = ["仪器设备", "标准装置", "证书报告", "委托需求", "访客", "标准规范", "能力列表", "计量培训", "合同发票", "业务统计", "客户列表", "外场检测"] +let SAMPLE_TITLE_ARRAY = ["已超期", "已检定", "检定总计", "样品总数"] +let SAMPLE_IMAGE_ARRAY = ["overtime", "verified", "total_verify", "total_sample"] public enum Constant: String { // 网络请求相关的地址 diff --git a/Meterage/Utils/DeviceSizeUtil.swift b/Meterage/Utils/DeviceSizeUtil.swift new file mode 100644 index 0000000..caaabbc --- /dev/null +++ b/Meterage/Utils/DeviceSizeUtil.swift @@ -0,0 +1,38 @@ +// +// DeviceSizeUtil.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import Foundation +import UIKit + +class DeviceSizeUtil { + public static var shared = DeviceSizeUtil() + + func getSafeAreaFrame(_ viewController:UIViewController) -> CGRect { + let isIphoneX = UIScreen.main.bounds.height >= 812 ? true : false + + var navigationBarHeight:CGFloat = isIphoneX ? 44 : 20 + var tabBarHeight:CGFloat = isIphoneX ? 34 : 0 + + //标志导航视图控制器是否存在 默认不存在 + //为什么需要这个? + //这里有个坑,当没有导航栏时,如果是iPhoneX等设备,tabBar.frame.height = 49 会不包含底部返回条的高度(34), 存在导航栏时 tabBar.frame.height = 83 + var noNavigationExists = true + + if let navigation = viewController.navigationController { + noNavigationExists = false + navigationBarHeight = navigationBarHeight + CGFloat(navigation.navigationBar.frame.height) + } + if let tabBarController = viewController.tabBarController { + tabBarHeight = noNavigationExists ? tabBarHeight : 0 + tabBarHeight = tabBarHeight + CGFloat(tabBarController.tabBar.frame.height) + } + + let frame = CGRect(x: 0, y: navigationBarHeight, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarHeight - navigationBarHeight) + + return frame + } +} diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate index 9abdbfd..6305059 100644 --- a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ diff --git a/Meterage/Cells/SampleCollectionViewCell.swift b/Meterage/Cells/SampleCollectionViewCell.swift new file mode 100644 index 0000000..63a1da3 --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.swift @@ -0,0 +1,21 @@ +// +// SampleCollectionViewCell.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class SampleCollectionViewCell: UICollectionViewCell { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var countView: UILabel! + @IBOutlet weak var titleView: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Meterage/Cells/SampleCollectionViewCell.xib b/Meterage/Cells/SampleCollectionViewCell.xib new file mode 100644 index 0000000..e38646a --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/Utils/Constant.swift b/Meterage/Utils/Constant.swift index a39de1a..464e70d 100644 --- a/Meterage/Utils/Constant.swift +++ b/Meterage/Utils/Constant.swift @@ -21,6 +21,8 @@ let MINE_TITLE_ARRAY = ["账户信息", "我的收藏", "推送设置", "隐私设置", "使用帮助", "版本更新", "关于APP", "意见反馈"] let MINE_IMAGE_ARRAY = ["account", "collection", "push_setting", "privacy_setting", "help", "update", "about", "feed_back"] let HOME_FUNC_OPERATE = ["仪器设备", "标准装置", "证书报告", "委托需求", "访客", "标准规范", "能力列表", "计量培训", "合同发票", "业务统计", "客户列表", "外场检测"] +let SAMPLE_TITLE_ARRAY = ["已超期", "已检定", "检定总计", "样品总数"] +let SAMPLE_IMAGE_ARRAY = ["overtime", "verified", "total_verify", "total_sample"] public enum Constant: String { // 网络请求相关的地址 diff --git a/Meterage/Utils/DeviceSizeUtil.swift b/Meterage/Utils/DeviceSizeUtil.swift new file mode 100644 index 0000000..caaabbc --- /dev/null +++ b/Meterage/Utils/DeviceSizeUtil.swift @@ -0,0 +1,38 @@ +// +// DeviceSizeUtil.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import Foundation +import UIKit + +class DeviceSizeUtil { + public static var shared = DeviceSizeUtil() + + func getSafeAreaFrame(_ viewController:UIViewController) -> CGRect { + let isIphoneX = UIScreen.main.bounds.height >= 812 ? true : false + + var navigationBarHeight:CGFloat = isIphoneX ? 44 : 20 + var tabBarHeight:CGFloat = isIphoneX ? 34 : 0 + + //标志导航视图控制器是否存在 默认不存在 + //为什么需要这个? + //这里有个坑,当没有导航栏时,如果是iPhoneX等设备,tabBar.frame.height = 49 会不包含底部返回条的高度(34), 存在导航栏时 tabBar.frame.height = 83 + var noNavigationExists = true + + if let navigation = viewController.navigationController { + noNavigationExists = false + navigationBarHeight = navigationBarHeight + CGFloat(navigation.navigationBar.frame.height) + } + if let tabBarController = viewController.tabBarController { + tabBarHeight = noNavigationExists ? tabBarHeight : 0 + tabBarHeight = tabBarHeight + CGFloat(tabBarController.tabBar.frame.height) + } + + let frame = CGRect(x: 0, y: navigationBarHeight, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarHeight - navigationBarHeight) + + return frame + } +} diff --git a/Meterage/ViewControllers/Home/HomePageViewController.swift b/Meterage/ViewControllers/Home/HomePageViewController.swift index 4248f4c..2cedf18 100644 --- a/Meterage/ViewControllers/Home/HomePageViewController.swift +++ b/Meterage/ViewControllers/Home/HomePageViewController.swift @@ -26,6 +26,7 @@ private let keyboardManager = IQKeyboardManager.shared private let defaults = Defaults.shared + private let device = DeviceSizeUtil.shared override func viewDidLoad() { super.viewDidLoad() @@ -77,12 +78,12 @@ collectionView.isScrollEnabled = false view.addSubview(collectionView) // 计算View高度 - let viewHeight = 3 * Int(layout.itemSize.height) + let collectionViewHeight = CGFloat(3 * Int(layout.itemSize.height)) // 动态布局 collectionView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) - make.height.equalTo(viewHeight) + make.height.equalTo(collectionViewHeight) // 距离searchBorderView底部10 make.top.equalTo(searchBorderView.snp.bottom).offset(10) } @@ -106,7 +107,9 @@ reminderContentView.backgroundColor = .white view.addSubview(reminderContentView) // 计算View高度 - let reminderViewHeight = SCREEN_HEIGHT - searchBorderView.bounds.height - CGFloat(viewHeight) - noticeLayout.bounds.height - 3.5 * (navigationController?.navigationBar.frame.size.height)! - CGFloat(10) + let safeAreaHeight = device.getSafeAreaFrame(self).height + // Home页没有navigationBar,高度需要加上34 + let reminderViewHeight = safeAreaHeight - searchBorderView.bounds.height - collectionViewHeight - noticeLayout.bounds.height - 3 * 10 + 34 reminderContentView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate index 9abdbfd..6305059 100644 --- a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ diff --git a/Meterage/Cells/SampleCollectionViewCell.swift b/Meterage/Cells/SampleCollectionViewCell.swift new file mode 100644 index 0000000..63a1da3 --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.swift @@ -0,0 +1,21 @@ +// +// SampleCollectionViewCell.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class SampleCollectionViewCell: UICollectionViewCell { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var countView: UILabel! + @IBOutlet weak var titleView: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Meterage/Cells/SampleCollectionViewCell.xib b/Meterage/Cells/SampleCollectionViewCell.xib new file mode 100644 index 0000000..e38646a --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/Utils/Constant.swift b/Meterage/Utils/Constant.swift index a39de1a..464e70d 100644 --- a/Meterage/Utils/Constant.swift +++ b/Meterage/Utils/Constant.swift @@ -21,6 +21,8 @@ let MINE_TITLE_ARRAY = ["账户信息", "我的收藏", "推送设置", "隐私设置", "使用帮助", "版本更新", "关于APP", "意见反馈"] let MINE_IMAGE_ARRAY = ["account", "collection", "push_setting", "privacy_setting", "help", "update", "about", "feed_back"] let HOME_FUNC_OPERATE = ["仪器设备", "标准装置", "证书报告", "委托需求", "访客", "标准规范", "能力列表", "计量培训", "合同发票", "业务统计", "客户列表", "外场检测"] +let SAMPLE_TITLE_ARRAY = ["已超期", "已检定", "检定总计", "样品总数"] +let SAMPLE_IMAGE_ARRAY = ["overtime", "verified", "total_verify", "total_sample"] public enum Constant: String { // 网络请求相关的地址 diff --git a/Meterage/Utils/DeviceSizeUtil.swift b/Meterage/Utils/DeviceSizeUtil.swift new file mode 100644 index 0000000..caaabbc --- /dev/null +++ b/Meterage/Utils/DeviceSizeUtil.swift @@ -0,0 +1,38 @@ +// +// DeviceSizeUtil.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import Foundation +import UIKit + +class DeviceSizeUtil { + public static var shared = DeviceSizeUtil() + + func getSafeAreaFrame(_ viewController:UIViewController) -> CGRect { + let isIphoneX = UIScreen.main.bounds.height >= 812 ? true : false + + var navigationBarHeight:CGFloat = isIphoneX ? 44 : 20 + var tabBarHeight:CGFloat = isIphoneX ? 34 : 0 + + //标志导航视图控制器是否存在 默认不存在 + //为什么需要这个? + //这里有个坑,当没有导航栏时,如果是iPhoneX等设备,tabBar.frame.height = 49 会不包含底部返回条的高度(34), 存在导航栏时 tabBar.frame.height = 83 + var noNavigationExists = true + + if let navigation = viewController.navigationController { + noNavigationExists = false + navigationBarHeight = navigationBarHeight + CGFloat(navigation.navigationBar.frame.height) + } + if let tabBarController = viewController.tabBarController { + tabBarHeight = noNavigationExists ? tabBarHeight : 0 + tabBarHeight = tabBarHeight + CGFloat(tabBarController.tabBar.frame.height) + } + + let frame = CGRect(x: 0, y: navigationBarHeight, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarHeight - navigationBarHeight) + + return frame + } +} diff --git a/Meterage/ViewControllers/Home/HomePageViewController.swift b/Meterage/ViewControllers/Home/HomePageViewController.swift index 4248f4c..2cedf18 100644 --- a/Meterage/ViewControllers/Home/HomePageViewController.swift +++ b/Meterage/ViewControllers/Home/HomePageViewController.swift @@ -26,6 +26,7 @@ private let keyboardManager = IQKeyboardManager.shared private let defaults = Defaults.shared + private let device = DeviceSizeUtil.shared override func viewDidLoad() { super.viewDidLoad() @@ -77,12 +78,12 @@ collectionView.isScrollEnabled = false view.addSubview(collectionView) // 计算View高度 - let viewHeight = 3 * Int(layout.itemSize.height) + let collectionViewHeight = CGFloat(3 * Int(layout.itemSize.height)) // 动态布局 collectionView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) - make.height.equalTo(viewHeight) + make.height.equalTo(collectionViewHeight) // 距离searchBorderView底部10 make.top.equalTo(searchBorderView.snp.bottom).offset(10) } @@ -106,7 +107,9 @@ reminderContentView.backgroundColor = .white view.addSubview(reminderContentView) // 计算View高度 - let reminderViewHeight = SCREEN_HEIGHT - searchBorderView.bounds.height - CGFloat(viewHeight) - noticeLayout.bounds.height - 3.5 * (navigationController?.navigationBar.frame.size.height)! - CGFloat(10) + let safeAreaHeight = device.getSafeAreaFrame(self).height + // Home页没有navigationBar,高度需要加上34 + let reminderViewHeight = safeAreaHeight - searchBorderView.bounds.height - collectionViewHeight - noticeLayout.bounds.height - 3 * 10 + 34 reminderContentView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) diff --git a/Meterage/ViewControllers/Login/LoginViewController.swift b/Meterage/ViewControllers/Login/LoginViewController.swift index d66d593..017e18b 100644 --- a/Meterage/ViewControllers/Login/LoginViewController.swift +++ b/Meterage/ViewControllers/Login/LoginViewController.swift @@ -93,6 +93,7 @@ } case .failure: AlertHub.shared.showWaringAlert(controller: self, message: "检验失败,无法登陆") + LoadingHub.shared.hideLoading() } } } diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate index 9abdbfd..6305059 100644 --- a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ diff --git a/Meterage/Cells/SampleCollectionViewCell.swift b/Meterage/Cells/SampleCollectionViewCell.swift new file mode 100644 index 0000000..63a1da3 --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.swift @@ -0,0 +1,21 @@ +// +// SampleCollectionViewCell.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class SampleCollectionViewCell: UICollectionViewCell { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var countView: UILabel! + @IBOutlet weak var titleView: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Meterage/Cells/SampleCollectionViewCell.xib b/Meterage/Cells/SampleCollectionViewCell.xib new file mode 100644 index 0000000..e38646a --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/Utils/Constant.swift b/Meterage/Utils/Constant.swift index a39de1a..464e70d 100644 --- a/Meterage/Utils/Constant.swift +++ b/Meterage/Utils/Constant.swift @@ -21,6 +21,8 @@ let MINE_TITLE_ARRAY = ["账户信息", "我的收藏", "推送设置", "隐私设置", "使用帮助", "版本更新", "关于APP", "意见反馈"] let MINE_IMAGE_ARRAY = ["account", "collection", "push_setting", "privacy_setting", "help", "update", "about", "feed_back"] let HOME_FUNC_OPERATE = ["仪器设备", "标准装置", "证书报告", "委托需求", "访客", "标准规范", "能力列表", "计量培训", "合同发票", "业务统计", "客户列表", "外场检测"] +let SAMPLE_TITLE_ARRAY = ["已超期", "已检定", "检定总计", "样品总数"] +let SAMPLE_IMAGE_ARRAY = ["overtime", "verified", "total_verify", "total_sample"] public enum Constant: String { // 网络请求相关的地址 diff --git a/Meterage/Utils/DeviceSizeUtil.swift b/Meterage/Utils/DeviceSizeUtil.swift new file mode 100644 index 0000000..caaabbc --- /dev/null +++ b/Meterage/Utils/DeviceSizeUtil.swift @@ -0,0 +1,38 @@ +// +// DeviceSizeUtil.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import Foundation +import UIKit + +class DeviceSizeUtil { + public static var shared = DeviceSizeUtil() + + func getSafeAreaFrame(_ viewController:UIViewController) -> CGRect { + let isIphoneX = UIScreen.main.bounds.height >= 812 ? true : false + + var navigationBarHeight:CGFloat = isIphoneX ? 44 : 20 + var tabBarHeight:CGFloat = isIphoneX ? 34 : 0 + + //标志导航视图控制器是否存在 默认不存在 + //为什么需要这个? + //这里有个坑,当没有导航栏时,如果是iPhoneX等设备,tabBar.frame.height = 49 会不包含底部返回条的高度(34), 存在导航栏时 tabBar.frame.height = 83 + var noNavigationExists = true + + if let navigation = viewController.navigationController { + noNavigationExists = false + navigationBarHeight = navigationBarHeight + CGFloat(navigation.navigationBar.frame.height) + } + if let tabBarController = viewController.tabBarController { + tabBarHeight = noNavigationExists ? tabBarHeight : 0 + tabBarHeight = tabBarHeight + CGFloat(tabBarController.tabBar.frame.height) + } + + let frame = CGRect(x: 0, y: navigationBarHeight, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarHeight - navigationBarHeight) + + return frame + } +} diff --git a/Meterage/ViewControllers/Home/HomePageViewController.swift b/Meterage/ViewControllers/Home/HomePageViewController.swift index 4248f4c..2cedf18 100644 --- a/Meterage/ViewControllers/Home/HomePageViewController.swift +++ b/Meterage/ViewControllers/Home/HomePageViewController.swift @@ -26,6 +26,7 @@ private let keyboardManager = IQKeyboardManager.shared private let defaults = Defaults.shared + private let device = DeviceSizeUtil.shared override func viewDidLoad() { super.viewDidLoad() @@ -77,12 +78,12 @@ collectionView.isScrollEnabled = false view.addSubview(collectionView) // 计算View高度 - let viewHeight = 3 * Int(layout.itemSize.height) + let collectionViewHeight = CGFloat(3 * Int(layout.itemSize.height)) // 动态布局 collectionView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) - make.height.equalTo(viewHeight) + make.height.equalTo(collectionViewHeight) // 距离searchBorderView底部10 make.top.equalTo(searchBorderView.snp.bottom).offset(10) } @@ -106,7 +107,9 @@ reminderContentView.backgroundColor = .white view.addSubview(reminderContentView) // 计算View高度 - let reminderViewHeight = SCREEN_HEIGHT - searchBorderView.bounds.height - CGFloat(viewHeight) - noticeLayout.bounds.height - 3.5 * (navigationController?.navigationBar.frame.size.height)! - CGFloat(10) + let safeAreaHeight = device.getSafeAreaFrame(self).height + // Home页没有navigationBar,高度需要加上34 + let reminderViewHeight = safeAreaHeight - searchBorderView.bounds.height - collectionViewHeight - noticeLayout.bounds.height - 3 * 10 + 34 reminderContentView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) diff --git a/Meterage/ViewControllers/Login/LoginViewController.swift b/Meterage/ViewControllers/Login/LoginViewController.swift index d66d593..017e18b 100644 --- a/Meterage/ViewControllers/Login/LoginViewController.swift +++ b/Meterage/ViewControllers/Login/LoginViewController.swift @@ -93,6 +93,7 @@ } case .failure: AlertHub.shared.showWaringAlert(controller: self, message: "检验失败,无法登陆") + LoadingHub.shared.hideLoading() } } } diff --git a/Meterage/ViewControllers/Sample/FutureTaskViewController.swift b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift new file mode 100644 index 0000000..32e330f --- /dev/null +++ b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift @@ -0,0 +1,29 @@ +// +// FutureTaskViewController.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class FutureTaskViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate index 9abdbfd..6305059 100644 --- a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ diff --git a/Meterage/Cells/SampleCollectionViewCell.swift b/Meterage/Cells/SampleCollectionViewCell.swift new file mode 100644 index 0000000..63a1da3 --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.swift @@ -0,0 +1,21 @@ +// +// SampleCollectionViewCell.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class SampleCollectionViewCell: UICollectionViewCell { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var countView: UILabel! + @IBOutlet weak var titleView: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Meterage/Cells/SampleCollectionViewCell.xib b/Meterage/Cells/SampleCollectionViewCell.xib new file mode 100644 index 0000000..e38646a --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/Utils/Constant.swift b/Meterage/Utils/Constant.swift index a39de1a..464e70d 100644 --- a/Meterage/Utils/Constant.swift +++ b/Meterage/Utils/Constant.swift @@ -21,6 +21,8 @@ let MINE_TITLE_ARRAY = ["账户信息", "我的收藏", "推送设置", "隐私设置", "使用帮助", "版本更新", "关于APP", "意见反馈"] let MINE_IMAGE_ARRAY = ["account", "collection", "push_setting", "privacy_setting", "help", "update", "about", "feed_back"] let HOME_FUNC_OPERATE = ["仪器设备", "标准装置", "证书报告", "委托需求", "访客", "标准规范", "能力列表", "计量培训", "合同发票", "业务统计", "客户列表", "外场检测"] +let SAMPLE_TITLE_ARRAY = ["已超期", "已检定", "检定总计", "样品总数"] +let SAMPLE_IMAGE_ARRAY = ["overtime", "verified", "total_verify", "total_sample"] public enum Constant: String { // 网络请求相关的地址 diff --git a/Meterage/Utils/DeviceSizeUtil.swift b/Meterage/Utils/DeviceSizeUtil.swift new file mode 100644 index 0000000..caaabbc --- /dev/null +++ b/Meterage/Utils/DeviceSizeUtil.swift @@ -0,0 +1,38 @@ +// +// DeviceSizeUtil.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import Foundation +import UIKit + +class DeviceSizeUtil { + public static var shared = DeviceSizeUtil() + + func getSafeAreaFrame(_ viewController:UIViewController) -> CGRect { + let isIphoneX = UIScreen.main.bounds.height >= 812 ? true : false + + var navigationBarHeight:CGFloat = isIphoneX ? 44 : 20 + var tabBarHeight:CGFloat = isIphoneX ? 34 : 0 + + //标志导航视图控制器是否存在 默认不存在 + //为什么需要这个? + //这里有个坑,当没有导航栏时,如果是iPhoneX等设备,tabBar.frame.height = 49 会不包含底部返回条的高度(34), 存在导航栏时 tabBar.frame.height = 83 + var noNavigationExists = true + + if let navigation = viewController.navigationController { + noNavigationExists = false + navigationBarHeight = navigationBarHeight + CGFloat(navigation.navigationBar.frame.height) + } + if let tabBarController = viewController.tabBarController { + tabBarHeight = noNavigationExists ? tabBarHeight : 0 + tabBarHeight = tabBarHeight + CGFloat(tabBarController.tabBar.frame.height) + } + + let frame = CGRect(x: 0, y: navigationBarHeight, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarHeight - navigationBarHeight) + + return frame + } +} diff --git a/Meterage/ViewControllers/Home/HomePageViewController.swift b/Meterage/ViewControllers/Home/HomePageViewController.swift index 4248f4c..2cedf18 100644 --- a/Meterage/ViewControllers/Home/HomePageViewController.swift +++ b/Meterage/ViewControllers/Home/HomePageViewController.swift @@ -26,6 +26,7 @@ private let keyboardManager = IQKeyboardManager.shared private let defaults = Defaults.shared + private let device = DeviceSizeUtil.shared override func viewDidLoad() { super.viewDidLoad() @@ -77,12 +78,12 @@ collectionView.isScrollEnabled = false view.addSubview(collectionView) // 计算View高度 - let viewHeight = 3 * Int(layout.itemSize.height) + let collectionViewHeight = CGFloat(3 * Int(layout.itemSize.height)) // 动态布局 collectionView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) - make.height.equalTo(viewHeight) + make.height.equalTo(collectionViewHeight) // 距离searchBorderView底部10 make.top.equalTo(searchBorderView.snp.bottom).offset(10) } @@ -106,7 +107,9 @@ reminderContentView.backgroundColor = .white view.addSubview(reminderContentView) // 计算View高度 - let reminderViewHeight = SCREEN_HEIGHT - searchBorderView.bounds.height - CGFloat(viewHeight) - noticeLayout.bounds.height - 3.5 * (navigationController?.navigationBar.frame.size.height)! - CGFloat(10) + let safeAreaHeight = device.getSafeAreaFrame(self).height + // Home页没有navigationBar,高度需要加上34 + let reminderViewHeight = safeAreaHeight - searchBorderView.bounds.height - collectionViewHeight - noticeLayout.bounds.height - 3 * 10 + 34 reminderContentView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) diff --git a/Meterage/ViewControllers/Login/LoginViewController.swift b/Meterage/ViewControllers/Login/LoginViewController.swift index d66d593..017e18b 100644 --- a/Meterage/ViewControllers/Login/LoginViewController.swift +++ b/Meterage/ViewControllers/Login/LoginViewController.swift @@ -93,6 +93,7 @@ } case .failure: AlertHub.shared.showWaringAlert(controller: self, message: "检验失败,无法登陆") + LoadingHub.shared.hideLoading() } } } diff --git a/Meterage/ViewControllers/Sample/FutureTaskViewController.swift b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift new file mode 100644 index 0000000..32e330f --- /dev/null +++ b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift @@ -0,0 +1,29 @@ +// +// FutureTaskViewController.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class FutureTaskViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Meterage/ViewControllers/Sample/FutureTaskViewController.xib b/Meterage/ViewControllers/Sample/FutureTaskViewController.xib new file mode 100644 index 0000000..de82b56 --- /dev/null +++ b/Meterage/ViewControllers/Sample/FutureTaskViewController.xib @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate index 9abdbfd..6305059 100644 --- a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ diff --git a/Meterage/Cells/SampleCollectionViewCell.swift b/Meterage/Cells/SampleCollectionViewCell.swift new file mode 100644 index 0000000..63a1da3 --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.swift @@ -0,0 +1,21 @@ +// +// SampleCollectionViewCell.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class SampleCollectionViewCell: UICollectionViewCell { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var countView: UILabel! + @IBOutlet weak var titleView: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Meterage/Cells/SampleCollectionViewCell.xib b/Meterage/Cells/SampleCollectionViewCell.xib new file mode 100644 index 0000000..e38646a --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/Utils/Constant.swift b/Meterage/Utils/Constant.swift index a39de1a..464e70d 100644 --- a/Meterage/Utils/Constant.swift +++ b/Meterage/Utils/Constant.swift @@ -21,6 +21,8 @@ let MINE_TITLE_ARRAY = ["账户信息", "我的收藏", "推送设置", "隐私设置", "使用帮助", "版本更新", "关于APP", "意见反馈"] let MINE_IMAGE_ARRAY = ["account", "collection", "push_setting", "privacy_setting", "help", "update", "about", "feed_back"] let HOME_FUNC_OPERATE = ["仪器设备", "标准装置", "证书报告", "委托需求", "访客", "标准规范", "能力列表", "计量培训", "合同发票", "业务统计", "客户列表", "外场检测"] +let SAMPLE_TITLE_ARRAY = ["已超期", "已检定", "检定总计", "样品总数"] +let SAMPLE_IMAGE_ARRAY = ["overtime", "verified", "total_verify", "total_sample"] public enum Constant: String { // 网络请求相关的地址 diff --git a/Meterage/Utils/DeviceSizeUtil.swift b/Meterage/Utils/DeviceSizeUtil.swift new file mode 100644 index 0000000..caaabbc --- /dev/null +++ b/Meterage/Utils/DeviceSizeUtil.swift @@ -0,0 +1,38 @@ +// +// DeviceSizeUtil.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import Foundation +import UIKit + +class DeviceSizeUtil { + public static var shared = DeviceSizeUtil() + + func getSafeAreaFrame(_ viewController:UIViewController) -> CGRect { + let isIphoneX = UIScreen.main.bounds.height >= 812 ? true : false + + var navigationBarHeight:CGFloat = isIphoneX ? 44 : 20 + var tabBarHeight:CGFloat = isIphoneX ? 34 : 0 + + //标志导航视图控制器是否存在 默认不存在 + //为什么需要这个? + //这里有个坑,当没有导航栏时,如果是iPhoneX等设备,tabBar.frame.height = 49 会不包含底部返回条的高度(34), 存在导航栏时 tabBar.frame.height = 83 + var noNavigationExists = true + + if let navigation = viewController.navigationController { + noNavigationExists = false + navigationBarHeight = navigationBarHeight + CGFloat(navigation.navigationBar.frame.height) + } + if let tabBarController = viewController.tabBarController { + tabBarHeight = noNavigationExists ? tabBarHeight : 0 + tabBarHeight = tabBarHeight + CGFloat(tabBarController.tabBar.frame.height) + } + + let frame = CGRect(x: 0, y: navigationBarHeight, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarHeight - navigationBarHeight) + + return frame + } +} diff --git a/Meterage/ViewControllers/Home/HomePageViewController.swift b/Meterage/ViewControllers/Home/HomePageViewController.swift index 4248f4c..2cedf18 100644 --- a/Meterage/ViewControllers/Home/HomePageViewController.swift +++ b/Meterage/ViewControllers/Home/HomePageViewController.swift @@ -26,6 +26,7 @@ private let keyboardManager = IQKeyboardManager.shared private let defaults = Defaults.shared + private let device = DeviceSizeUtil.shared override func viewDidLoad() { super.viewDidLoad() @@ -77,12 +78,12 @@ collectionView.isScrollEnabled = false view.addSubview(collectionView) // 计算View高度 - let viewHeight = 3 * Int(layout.itemSize.height) + let collectionViewHeight = CGFloat(3 * Int(layout.itemSize.height)) // 动态布局 collectionView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) - make.height.equalTo(viewHeight) + make.height.equalTo(collectionViewHeight) // 距离searchBorderView底部10 make.top.equalTo(searchBorderView.snp.bottom).offset(10) } @@ -106,7 +107,9 @@ reminderContentView.backgroundColor = .white view.addSubview(reminderContentView) // 计算View高度 - let reminderViewHeight = SCREEN_HEIGHT - searchBorderView.bounds.height - CGFloat(viewHeight) - noticeLayout.bounds.height - 3.5 * (navigationController?.navigationBar.frame.size.height)! - CGFloat(10) + let safeAreaHeight = device.getSafeAreaFrame(self).height + // Home页没有navigationBar,高度需要加上34 + let reminderViewHeight = safeAreaHeight - searchBorderView.bounds.height - collectionViewHeight - noticeLayout.bounds.height - 3 * 10 + 34 reminderContentView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) diff --git a/Meterage/ViewControllers/Login/LoginViewController.swift b/Meterage/ViewControllers/Login/LoginViewController.swift index d66d593..017e18b 100644 --- a/Meterage/ViewControllers/Login/LoginViewController.swift +++ b/Meterage/ViewControllers/Login/LoginViewController.swift @@ -93,6 +93,7 @@ } case .failure: AlertHub.shared.showWaringAlert(controller: self, message: "检验失败,无法登陆") + LoadingHub.shared.hideLoading() } } } diff --git a/Meterage/ViewControllers/Sample/FutureTaskViewController.swift b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift new file mode 100644 index 0000000..32e330f --- /dev/null +++ b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift @@ -0,0 +1,29 @@ +// +// FutureTaskViewController.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class FutureTaskViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Meterage/ViewControllers/Sample/FutureTaskViewController.xib b/Meterage/ViewControllers/Sample/FutureTaskViewController.xib new file mode 100644 index 0000000..de82b56 --- /dev/null +++ b/Meterage/ViewControllers/Sample/FutureTaskViewController.xib @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/ViewControllers/Sample/SamplePageViewController.swift b/Meterage/ViewControllers/Sample/SamplePageViewController.swift index 7bcf375..597ece0 100644 --- a/Meterage/ViewControllers/Sample/SamplePageViewController.swift +++ b/Meterage/ViewControllers/Sample/SamplePageViewController.swift @@ -7,29 +7,109 @@ import UIKit -class SamplePageViewController: UIViewController { +class SamplePageViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UIScrollViewDelegate { - @IBOutlet weak var topStackView: UIStackView! + private var collectionView: UICollectionView! + private var segmentedControl: UISegmentedControl! + private let underTask = UnderTaskViewController() + private let futureTask = FutureTaskViewController() + private let totalTask = TotalTaskViewController() + + private var segmentView: UIScrollView! + + private let device = DeviceSizeUtil.shared + override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .mainBackground navigationItem.title = "样品记录" navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.mainTextColor] // Do any additional setup after loading the view. - topStackView.layer.cornerRadius = 10 - topStackView.layer.masksToBounds = true + + let layout = UICollectionViewFlowLayout() + // 宽高 + let collectionViewHeight = CGFloat(15) + SCREEN_WIDTH / 5 + layout.itemSize = CGSize(width: SCREEN_WIDTH / 5, height: collectionViewHeight) + collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: layout) + collectionView.register(UINib(nibName: "SampleCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "sampleCollectionViewCell") + collectionView.delegate = self + collectionView.dataSource = self + collectionView.backgroundColor = .white + collectionView.layer.cornerRadius = 10 + collectionView.layer.masksToBounds = true + collectionView.isScrollEnabled = false + view.addSubview(collectionView) + // 动态布局 + collectionView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.height.equalTo(collectionViewHeight) + make.top.equalTo(100) + } + + segmentedControl = UISegmentedControl(items: ["检定中", "预期任务", "全部"]) + segmentedControl.apportionsSegmentWidthsByContent = true + segmentedControl.selectedSegmentIndex = 0 + segmentedControl.addTarget(self, action: #selector(segmentedControlChanged(_:)), for: .valueChanged) + view.addSubview(segmentedControl) + segmentedControl.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.top.equalTo(collectionView.snp.bottom).offset(10) + } + // 定义一个视图用于存放具体显示的内容 + segmentView = UIScrollView() + segmentView.delegate = self + view.addSubview(segmentView) + + let safeAreaHeight = device.getSafeAreaFrame(self).height + let segmentViewHeight = safeAreaHeight - collectionViewHeight - segmentedControl.frame.height - 4 * 10 + segmentView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.height.equalTo(segmentViewHeight) + make.top.equalTo(segmentedControl.snp.bottom).offset(10) + } + + underTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + futureTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + totalTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + + //初始化一个页面 + segmentView.addSubview(underTask.view) } - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. + /// UISegmentedControl + @objc func segmentedControlChanged(_ sender: AnyObject?) { + let segment: UISegmentedControl = sender as! UISegmentedControl + for view in segmentView.subviews { + view.removeFromSuperview() + } + switch segment.selectedSegmentIndex { + case 0: + segmentView.addSubview(underTask.view) + case 1: + segmentView.addSubview(futureTask.view) + case 2: + segmentView.addSubview(totalTask.view) + default: + print("default ") + } } - */ + /// UICollectionView + // 显示多少个Item + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + SAMPLE_TITLE_ARRAY.count + } + + // 每个cell显示的内容 + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell: SampleCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "sampleCollectionViewCell", for: indexPath) as! SampleCollectionViewCell + cell.imageView.image = UIImage(named: SAMPLE_IMAGE_ARRAY[indexPath.row]) + cell.countView.text = "0" + cell.titleView.text = SAMPLE_TITLE_ARRAY[indexPath.row] + return cell + } } diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate index 9abdbfd..6305059 100644 --- a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ diff --git a/Meterage/Cells/SampleCollectionViewCell.swift b/Meterage/Cells/SampleCollectionViewCell.swift new file mode 100644 index 0000000..63a1da3 --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.swift @@ -0,0 +1,21 @@ +// +// SampleCollectionViewCell.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class SampleCollectionViewCell: UICollectionViewCell { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var countView: UILabel! + @IBOutlet weak var titleView: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Meterage/Cells/SampleCollectionViewCell.xib b/Meterage/Cells/SampleCollectionViewCell.xib new file mode 100644 index 0000000..e38646a --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/Utils/Constant.swift b/Meterage/Utils/Constant.swift index a39de1a..464e70d 100644 --- a/Meterage/Utils/Constant.swift +++ b/Meterage/Utils/Constant.swift @@ -21,6 +21,8 @@ let MINE_TITLE_ARRAY = ["账户信息", "我的收藏", "推送设置", "隐私设置", "使用帮助", "版本更新", "关于APP", "意见反馈"] let MINE_IMAGE_ARRAY = ["account", "collection", "push_setting", "privacy_setting", "help", "update", "about", "feed_back"] let HOME_FUNC_OPERATE = ["仪器设备", "标准装置", "证书报告", "委托需求", "访客", "标准规范", "能力列表", "计量培训", "合同发票", "业务统计", "客户列表", "外场检测"] +let SAMPLE_TITLE_ARRAY = ["已超期", "已检定", "检定总计", "样品总数"] +let SAMPLE_IMAGE_ARRAY = ["overtime", "verified", "total_verify", "total_sample"] public enum Constant: String { // 网络请求相关的地址 diff --git a/Meterage/Utils/DeviceSizeUtil.swift b/Meterage/Utils/DeviceSizeUtil.swift new file mode 100644 index 0000000..caaabbc --- /dev/null +++ b/Meterage/Utils/DeviceSizeUtil.swift @@ -0,0 +1,38 @@ +// +// DeviceSizeUtil.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import Foundation +import UIKit + +class DeviceSizeUtil { + public static var shared = DeviceSizeUtil() + + func getSafeAreaFrame(_ viewController:UIViewController) -> CGRect { + let isIphoneX = UIScreen.main.bounds.height >= 812 ? true : false + + var navigationBarHeight:CGFloat = isIphoneX ? 44 : 20 + var tabBarHeight:CGFloat = isIphoneX ? 34 : 0 + + //标志导航视图控制器是否存在 默认不存在 + //为什么需要这个? + //这里有个坑,当没有导航栏时,如果是iPhoneX等设备,tabBar.frame.height = 49 会不包含底部返回条的高度(34), 存在导航栏时 tabBar.frame.height = 83 + var noNavigationExists = true + + if let navigation = viewController.navigationController { + noNavigationExists = false + navigationBarHeight = navigationBarHeight + CGFloat(navigation.navigationBar.frame.height) + } + if let tabBarController = viewController.tabBarController { + tabBarHeight = noNavigationExists ? tabBarHeight : 0 + tabBarHeight = tabBarHeight + CGFloat(tabBarController.tabBar.frame.height) + } + + let frame = CGRect(x: 0, y: navigationBarHeight, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarHeight - navigationBarHeight) + + return frame + } +} diff --git a/Meterage/ViewControllers/Home/HomePageViewController.swift b/Meterage/ViewControllers/Home/HomePageViewController.swift index 4248f4c..2cedf18 100644 --- a/Meterage/ViewControllers/Home/HomePageViewController.swift +++ b/Meterage/ViewControllers/Home/HomePageViewController.swift @@ -26,6 +26,7 @@ private let keyboardManager = IQKeyboardManager.shared private let defaults = Defaults.shared + private let device = DeviceSizeUtil.shared override func viewDidLoad() { super.viewDidLoad() @@ -77,12 +78,12 @@ collectionView.isScrollEnabled = false view.addSubview(collectionView) // 计算View高度 - let viewHeight = 3 * Int(layout.itemSize.height) + let collectionViewHeight = CGFloat(3 * Int(layout.itemSize.height)) // 动态布局 collectionView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) - make.height.equalTo(viewHeight) + make.height.equalTo(collectionViewHeight) // 距离searchBorderView底部10 make.top.equalTo(searchBorderView.snp.bottom).offset(10) } @@ -106,7 +107,9 @@ reminderContentView.backgroundColor = .white view.addSubview(reminderContentView) // 计算View高度 - let reminderViewHeight = SCREEN_HEIGHT - searchBorderView.bounds.height - CGFloat(viewHeight) - noticeLayout.bounds.height - 3.5 * (navigationController?.navigationBar.frame.size.height)! - CGFloat(10) + let safeAreaHeight = device.getSafeAreaFrame(self).height + // Home页没有navigationBar,高度需要加上34 + let reminderViewHeight = safeAreaHeight - searchBorderView.bounds.height - collectionViewHeight - noticeLayout.bounds.height - 3 * 10 + 34 reminderContentView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) diff --git a/Meterage/ViewControllers/Login/LoginViewController.swift b/Meterage/ViewControllers/Login/LoginViewController.swift index d66d593..017e18b 100644 --- a/Meterage/ViewControllers/Login/LoginViewController.swift +++ b/Meterage/ViewControllers/Login/LoginViewController.swift @@ -93,6 +93,7 @@ } case .failure: AlertHub.shared.showWaringAlert(controller: self, message: "检验失败,无法登陆") + LoadingHub.shared.hideLoading() } } } diff --git a/Meterage/ViewControllers/Sample/FutureTaskViewController.swift b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift new file mode 100644 index 0000000..32e330f --- /dev/null +++ b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift @@ -0,0 +1,29 @@ +// +// FutureTaskViewController.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class FutureTaskViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Meterage/ViewControllers/Sample/FutureTaskViewController.xib b/Meterage/ViewControllers/Sample/FutureTaskViewController.xib new file mode 100644 index 0000000..de82b56 --- /dev/null +++ b/Meterage/ViewControllers/Sample/FutureTaskViewController.xib @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/ViewControllers/Sample/SamplePageViewController.swift b/Meterage/ViewControllers/Sample/SamplePageViewController.swift index 7bcf375..597ece0 100644 --- a/Meterage/ViewControllers/Sample/SamplePageViewController.swift +++ b/Meterage/ViewControllers/Sample/SamplePageViewController.swift @@ -7,29 +7,109 @@ import UIKit -class SamplePageViewController: UIViewController { +class SamplePageViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UIScrollViewDelegate { - @IBOutlet weak var topStackView: UIStackView! + private var collectionView: UICollectionView! + private var segmentedControl: UISegmentedControl! + private let underTask = UnderTaskViewController() + private let futureTask = FutureTaskViewController() + private let totalTask = TotalTaskViewController() + + private var segmentView: UIScrollView! + + private let device = DeviceSizeUtil.shared + override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .mainBackground navigationItem.title = "样品记录" navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.mainTextColor] // Do any additional setup after loading the view. - topStackView.layer.cornerRadius = 10 - topStackView.layer.masksToBounds = true + + let layout = UICollectionViewFlowLayout() + // 宽高 + let collectionViewHeight = CGFloat(15) + SCREEN_WIDTH / 5 + layout.itemSize = CGSize(width: SCREEN_WIDTH / 5, height: collectionViewHeight) + collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: layout) + collectionView.register(UINib(nibName: "SampleCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "sampleCollectionViewCell") + collectionView.delegate = self + collectionView.dataSource = self + collectionView.backgroundColor = .white + collectionView.layer.cornerRadius = 10 + collectionView.layer.masksToBounds = true + collectionView.isScrollEnabled = false + view.addSubview(collectionView) + // 动态布局 + collectionView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.height.equalTo(collectionViewHeight) + make.top.equalTo(100) + } + + segmentedControl = UISegmentedControl(items: ["检定中", "预期任务", "全部"]) + segmentedControl.apportionsSegmentWidthsByContent = true + segmentedControl.selectedSegmentIndex = 0 + segmentedControl.addTarget(self, action: #selector(segmentedControlChanged(_:)), for: .valueChanged) + view.addSubview(segmentedControl) + segmentedControl.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.top.equalTo(collectionView.snp.bottom).offset(10) + } + // 定义一个视图用于存放具体显示的内容 + segmentView = UIScrollView() + segmentView.delegate = self + view.addSubview(segmentView) + + let safeAreaHeight = device.getSafeAreaFrame(self).height + let segmentViewHeight = safeAreaHeight - collectionViewHeight - segmentedControl.frame.height - 4 * 10 + segmentView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.height.equalTo(segmentViewHeight) + make.top.equalTo(segmentedControl.snp.bottom).offset(10) + } + + underTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + futureTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + totalTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + + //初始化一个页面 + segmentView.addSubview(underTask.view) } - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. + /// UISegmentedControl + @objc func segmentedControlChanged(_ sender: AnyObject?) { + let segment: UISegmentedControl = sender as! UISegmentedControl + for view in segmentView.subviews { + view.removeFromSuperview() + } + switch segment.selectedSegmentIndex { + case 0: + segmentView.addSubview(underTask.view) + case 1: + segmentView.addSubview(futureTask.view) + case 2: + segmentView.addSubview(totalTask.view) + default: + print("default ") + } } - */ + /// UICollectionView + // 显示多少个Item + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + SAMPLE_TITLE_ARRAY.count + } + + // 每个cell显示的内容 + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell: SampleCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "sampleCollectionViewCell", for: indexPath) as! SampleCollectionViewCell + cell.imageView.image = UIImage(named: SAMPLE_IMAGE_ARRAY[indexPath.row]) + cell.countView.text = "0" + cell.titleView.text = SAMPLE_TITLE_ARRAY[indexPath.row] + return cell + } } diff --git a/Meterage/ViewControllers/Sample/SamplePageViewController.xib b/Meterage/ViewControllers/Sample/SamplePageViewController.xib index b04c599..436f0ef 100644 --- a/Meterage/ViewControllers/Sample/SamplePageViewController.xib +++ b/Meterage/ViewControllers/Sample/SamplePageViewController.xib @@ -10,7 +10,6 @@ - @@ -18,22 +17,8 @@ - - - - - - - - - - - - - - diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate index 9abdbfd..6305059 100644 --- a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ diff --git a/Meterage/Cells/SampleCollectionViewCell.swift b/Meterage/Cells/SampleCollectionViewCell.swift new file mode 100644 index 0000000..63a1da3 --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.swift @@ -0,0 +1,21 @@ +// +// SampleCollectionViewCell.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class SampleCollectionViewCell: UICollectionViewCell { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var countView: UILabel! + @IBOutlet weak var titleView: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Meterage/Cells/SampleCollectionViewCell.xib b/Meterage/Cells/SampleCollectionViewCell.xib new file mode 100644 index 0000000..e38646a --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/Utils/Constant.swift b/Meterage/Utils/Constant.swift index a39de1a..464e70d 100644 --- a/Meterage/Utils/Constant.swift +++ b/Meterage/Utils/Constant.swift @@ -21,6 +21,8 @@ let MINE_TITLE_ARRAY = ["账户信息", "我的收藏", "推送设置", "隐私设置", "使用帮助", "版本更新", "关于APP", "意见反馈"] let MINE_IMAGE_ARRAY = ["account", "collection", "push_setting", "privacy_setting", "help", "update", "about", "feed_back"] let HOME_FUNC_OPERATE = ["仪器设备", "标准装置", "证书报告", "委托需求", "访客", "标准规范", "能力列表", "计量培训", "合同发票", "业务统计", "客户列表", "外场检测"] +let SAMPLE_TITLE_ARRAY = ["已超期", "已检定", "检定总计", "样品总数"] +let SAMPLE_IMAGE_ARRAY = ["overtime", "verified", "total_verify", "total_sample"] public enum Constant: String { // 网络请求相关的地址 diff --git a/Meterage/Utils/DeviceSizeUtil.swift b/Meterage/Utils/DeviceSizeUtil.swift new file mode 100644 index 0000000..caaabbc --- /dev/null +++ b/Meterage/Utils/DeviceSizeUtil.swift @@ -0,0 +1,38 @@ +// +// DeviceSizeUtil.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import Foundation +import UIKit + +class DeviceSizeUtil { + public static var shared = DeviceSizeUtil() + + func getSafeAreaFrame(_ viewController:UIViewController) -> CGRect { + let isIphoneX = UIScreen.main.bounds.height >= 812 ? true : false + + var navigationBarHeight:CGFloat = isIphoneX ? 44 : 20 + var tabBarHeight:CGFloat = isIphoneX ? 34 : 0 + + //标志导航视图控制器是否存在 默认不存在 + //为什么需要这个? + //这里有个坑,当没有导航栏时,如果是iPhoneX等设备,tabBar.frame.height = 49 会不包含底部返回条的高度(34), 存在导航栏时 tabBar.frame.height = 83 + var noNavigationExists = true + + if let navigation = viewController.navigationController { + noNavigationExists = false + navigationBarHeight = navigationBarHeight + CGFloat(navigation.navigationBar.frame.height) + } + if let tabBarController = viewController.tabBarController { + tabBarHeight = noNavigationExists ? tabBarHeight : 0 + tabBarHeight = tabBarHeight + CGFloat(tabBarController.tabBar.frame.height) + } + + let frame = CGRect(x: 0, y: navigationBarHeight, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarHeight - navigationBarHeight) + + return frame + } +} diff --git a/Meterage/ViewControllers/Home/HomePageViewController.swift b/Meterage/ViewControllers/Home/HomePageViewController.swift index 4248f4c..2cedf18 100644 --- a/Meterage/ViewControllers/Home/HomePageViewController.swift +++ b/Meterage/ViewControllers/Home/HomePageViewController.swift @@ -26,6 +26,7 @@ private let keyboardManager = IQKeyboardManager.shared private let defaults = Defaults.shared + private let device = DeviceSizeUtil.shared override func viewDidLoad() { super.viewDidLoad() @@ -77,12 +78,12 @@ collectionView.isScrollEnabled = false view.addSubview(collectionView) // 计算View高度 - let viewHeight = 3 * Int(layout.itemSize.height) + let collectionViewHeight = CGFloat(3 * Int(layout.itemSize.height)) // 动态布局 collectionView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) - make.height.equalTo(viewHeight) + make.height.equalTo(collectionViewHeight) // 距离searchBorderView底部10 make.top.equalTo(searchBorderView.snp.bottom).offset(10) } @@ -106,7 +107,9 @@ reminderContentView.backgroundColor = .white view.addSubview(reminderContentView) // 计算View高度 - let reminderViewHeight = SCREEN_HEIGHT - searchBorderView.bounds.height - CGFloat(viewHeight) - noticeLayout.bounds.height - 3.5 * (navigationController?.navigationBar.frame.size.height)! - CGFloat(10) + let safeAreaHeight = device.getSafeAreaFrame(self).height + // Home页没有navigationBar,高度需要加上34 + let reminderViewHeight = safeAreaHeight - searchBorderView.bounds.height - collectionViewHeight - noticeLayout.bounds.height - 3 * 10 + 34 reminderContentView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) diff --git a/Meterage/ViewControllers/Login/LoginViewController.swift b/Meterage/ViewControllers/Login/LoginViewController.swift index d66d593..017e18b 100644 --- a/Meterage/ViewControllers/Login/LoginViewController.swift +++ b/Meterage/ViewControllers/Login/LoginViewController.swift @@ -93,6 +93,7 @@ } case .failure: AlertHub.shared.showWaringAlert(controller: self, message: "检验失败,无法登陆") + LoadingHub.shared.hideLoading() } } } diff --git a/Meterage/ViewControllers/Sample/FutureTaskViewController.swift b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift new file mode 100644 index 0000000..32e330f --- /dev/null +++ b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift @@ -0,0 +1,29 @@ +// +// FutureTaskViewController.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class FutureTaskViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Meterage/ViewControllers/Sample/FutureTaskViewController.xib b/Meterage/ViewControllers/Sample/FutureTaskViewController.xib new file mode 100644 index 0000000..de82b56 --- /dev/null +++ b/Meterage/ViewControllers/Sample/FutureTaskViewController.xib @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/ViewControllers/Sample/SamplePageViewController.swift b/Meterage/ViewControllers/Sample/SamplePageViewController.swift index 7bcf375..597ece0 100644 --- a/Meterage/ViewControllers/Sample/SamplePageViewController.swift +++ b/Meterage/ViewControllers/Sample/SamplePageViewController.swift @@ -7,29 +7,109 @@ import UIKit -class SamplePageViewController: UIViewController { +class SamplePageViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UIScrollViewDelegate { - @IBOutlet weak var topStackView: UIStackView! + private var collectionView: UICollectionView! + private var segmentedControl: UISegmentedControl! + private let underTask = UnderTaskViewController() + private let futureTask = FutureTaskViewController() + private let totalTask = TotalTaskViewController() + + private var segmentView: UIScrollView! + + private let device = DeviceSizeUtil.shared + override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .mainBackground navigationItem.title = "样品记录" navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.mainTextColor] // Do any additional setup after loading the view. - topStackView.layer.cornerRadius = 10 - topStackView.layer.masksToBounds = true + + let layout = UICollectionViewFlowLayout() + // 宽高 + let collectionViewHeight = CGFloat(15) + SCREEN_WIDTH / 5 + layout.itemSize = CGSize(width: SCREEN_WIDTH / 5, height: collectionViewHeight) + collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: layout) + collectionView.register(UINib(nibName: "SampleCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "sampleCollectionViewCell") + collectionView.delegate = self + collectionView.dataSource = self + collectionView.backgroundColor = .white + collectionView.layer.cornerRadius = 10 + collectionView.layer.masksToBounds = true + collectionView.isScrollEnabled = false + view.addSubview(collectionView) + // 动态布局 + collectionView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.height.equalTo(collectionViewHeight) + make.top.equalTo(100) + } + + segmentedControl = UISegmentedControl(items: ["检定中", "预期任务", "全部"]) + segmentedControl.apportionsSegmentWidthsByContent = true + segmentedControl.selectedSegmentIndex = 0 + segmentedControl.addTarget(self, action: #selector(segmentedControlChanged(_:)), for: .valueChanged) + view.addSubview(segmentedControl) + segmentedControl.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.top.equalTo(collectionView.snp.bottom).offset(10) + } + // 定义一个视图用于存放具体显示的内容 + segmentView = UIScrollView() + segmentView.delegate = self + view.addSubview(segmentView) + + let safeAreaHeight = device.getSafeAreaFrame(self).height + let segmentViewHeight = safeAreaHeight - collectionViewHeight - segmentedControl.frame.height - 4 * 10 + segmentView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.height.equalTo(segmentViewHeight) + make.top.equalTo(segmentedControl.snp.bottom).offset(10) + } + + underTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + futureTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + totalTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + + //初始化一个页面 + segmentView.addSubview(underTask.view) } - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. + /// UISegmentedControl + @objc func segmentedControlChanged(_ sender: AnyObject?) { + let segment: UISegmentedControl = sender as! UISegmentedControl + for view in segmentView.subviews { + view.removeFromSuperview() + } + switch segment.selectedSegmentIndex { + case 0: + segmentView.addSubview(underTask.view) + case 1: + segmentView.addSubview(futureTask.view) + case 2: + segmentView.addSubview(totalTask.view) + default: + print("default ") + } } - */ + /// UICollectionView + // 显示多少个Item + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + SAMPLE_TITLE_ARRAY.count + } + + // 每个cell显示的内容 + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell: SampleCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "sampleCollectionViewCell", for: indexPath) as! SampleCollectionViewCell + cell.imageView.image = UIImage(named: SAMPLE_IMAGE_ARRAY[indexPath.row]) + cell.countView.text = "0" + cell.titleView.text = SAMPLE_TITLE_ARRAY[indexPath.row] + return cell + } } diff --git a/Meterage/ViewControllers/Sample/SamplePageViewController.xib b/Meterage/ViewControllers/Sample/SamplePageViewController.xib index b04c599..436f0ef 100644 --- a/Meterage/ViewControllers/Sample/SamplePageViewController.xib +++ b/Meterage/ViewControllers/Sample/SamplePageViewController.xib @@ -10,7 +10,6 @@ - @@ -18,22 +17,8 @@ - - - - - - - - - - - - - - diff --git a/Meterage/ViewControllers/Sample/TotalTaskViewController.swift b/Meterage/ViewControllers/Sample/TotalTaskViewController.swift new file mode 100644 index 0000000..814646c --- /dev/null +++ b/Meterage/ViewControllers/Sample/TotalTaskViewController.swift @@ -0,0 +1,29 @@ +// +// TotalTaskViewController.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class TotalTaskViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate index 9abdbfd..6305059 100644 --- a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ diff --git a/Meterage/Cells/SampleCollectionViewCell.swift b/Meterage/Cells/SampleCollectionViewCell.swift new file mode 100644 index 0000000..63a1da3 --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.swift @@ -0,0 +1,21 @@ +// +// SampleCollectionViewCell.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class SampleCollectionViewCell: UICollectionViewCell { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var countView: UILabel! + @IBOutlet weak var titleView: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Meterage/Cells/SampleCollectionViewCell.xib b/Meterage/Cells/SampleCollectionViewCell.xib new file mode 100644 index 0000000..e38646a --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/Utils/Constant.swift b/Meterage/Utils/Constant.swift index a39de1a..464e70d 100644 --- a/Meterage/Utils/Constant.swift +++ b/Meterage/Utils/Constant.swift @@ -21,6 +21,8 @@ let MINE_TITLE_ARRAY = ["账户信息", "我的收藏", "推送设置", "隐私设置", "使用帮助", "版本更新", "关于APP", "意见反馈"] let MINE_IMAGE_ARRAY = ["account", "collection", "push_setting", "privacy_setting", "help", "update", "about", "feed_back"] let HOME_FUNC_OPERATE = ["仪器设备", "标准装置", "证书报告", "委托需求", "访客", "标准规范", "能力列表", "计量培训", "合同发票", "业务统计", "客户列表", "外场检测"] +let SAMPLE_TITLE_ARRAY = ["已超期", "已检定", "检定总计", "样品总数"] +let SAMPLE_IMAGE_ARRAY = ["overtime", "verified", "total_verify", "total_sample"] public enum Constant: String { // 网络请求相关的地址 diff --git a/Meterage/Utils/DeviceSizeUtil.swift b/Meterage/Utils/DeviceSizeUtil.swift new file mode 100644 index 0000000..caaabbc --- /dev/null +++ b/Meterage/Utils/DeviceSizeUtil.swift @@ -0,0 +1,38 @@ +// +// DeviceSizeUtil.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import Foundation +import UIKit + +class DeviceSizeUtil { + public static var shared = DeviceSizeUtil() + + func getSafeAreaFrame(_ viewController:UIViewController) -> CGRect { + let isIphoneX = UIScreen.main.bounds.height >= 812 ? true : false + + var navigationBarHeight:CGFloat = isIphoneX ? 44 : 20 + var tabBarHeight:CGFloat = isIphoneX ? 34 : 0 + + //标志导航视图控制器是否存在 默认不存在 + //为什么需要这个? + //这里有个坑,当没有导航栏时,如果是iPhoneX等设备,tabBar.frame.height = 49 会不包含底部返回条的高度(34), 存在导航栏时 tabBar.frame.height = 83 + var noNavigationExists = true + + if let navigation = viewController.navigationController { + noNavigationExists = false + navigationBarHeight = navigationBarHeight + CGFloat(navigation.navigationBar.frame.height) + } + if let tabBarController = viewController.tabBarController { + tabBarHeight = noNavigationExists ? tabBarHeight : 0 + tabBarHeight = tabBarHeight + CGFloat(tabBarController.tabBar.frame.height) + } + + let frame = CGRect(x: 0, y: navigationBarHeight, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarHeight - navigationBarHeight) + + return frame + } +} diff --git a/Meterage/ViewControllers/Home/HomePageViewController.swift b/Meterage/ViewControllers/Home/HomePageViewController.swift index 4248f4c..2cedf18 100644 --- a/Meterage/ViewControllers/Home/HomePageViewController.swift +++ b/Meterage/ViewControllers/Home/HomePageViewController.swift @@ -26,6 +26,7 @@ private let keyboardManager = IQKeyboardManager.shared private let defaults = Defaults.shared + private let device = DeviceSizeUtil.shared override func viewDidLoad() { super.viewDidLoad() @@ -77,12 +78,12 @@ collectionView.isScrollEnabled = false view.addSubview(collectionView) // 计算View高度 - let viewHeight = 3 * Int(layout.itemSize.height) + let collectionViewHeight = CGFloat(3 * Int(layout.itemSize.height)) // 动态布局 collectionView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) - make.height.equalTo(viewHeight) + make.height.equalTo(collectionViewHeight) // 距离searchBorderView底部10 make.top.equalTo(searchBorderView.snp.bottom).offset(10) } @@ -106,7 +107,9 @@ reminderContentView.backgroundColor = .white view.addSubview(reminderContentView) // 计算View高度 - let reminderViewHeight = SCREEN_HEIGHT - searchBorderView.bounds.height - CGFloat(viewHeight) - noticeLayout.bounds.height - 3.5 * (navigationController?.navigationBar.frame.size.height)! - CGFloat(10) + let safeAreaHeight = device.getSafeAreaFrame(self).height + // Home页没有navigationBar,高度需要加上34 + let reminderViewHeight = safeAreaHeight - searchBorderView.bounds.height - collectionViewHeight - noticeLayout.bounds.height - 3 * 10 + 34 reminderContentView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) diff --git a/Meterage/ViewControllers/Login/LoginViewController.swift b/Meterage/ViewControllers/Login/LoginViewController.swift index d66d593..017e18b 100644 --- a/Meterage/ViewControllers/Login/LoginViewController.swift +++ b/Meterage/ViewControllers/Login/LoginViewController.swift @@ -93,6 +93,7 @@ } case .failure: AlertHub.shared.showWaringAlert(controller: self, message: "检验失败,无法登陆") + LoadingHub.shared.hideLoading() } } } diff --git a/Meterage/ViewControllers/Sample/FutureTaskViewController.swift b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift new file mode 100644 index 0000000..32e330f --- /dev/null +++ b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift @@ -0,0 +1,29 @@ +// +// FutureTaskViewController.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class FutureTaskViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Meterage/ViewControllers/Sample/FutureTaskViewController.xib b/Meterage/ViewControllers/Sample/FutureTaskViewController.xib new file mode 100644 index 0000000..de82b56 --- /dev/null +++ b/Meterage/ViewControllers/Sample/FutureTaskViewController.xib @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/ViewControllers/Sample/SamplePageViewController.swift b/Meterage/ViewControllers/Sample/SamplePageViewController.swift index 7bcf375..597ece0 100644 --- a/Meterage/ViewControllers/Sample/SamplePageViewController.swift +++ b/Meterage/ViewControllers/Sample/SamplePageViewController.swift @@ -7,29 +7,109 @@ import UIKit -class SamplePageViewController: UIViewController { +class SamplePageViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UIScrollViewDelegate { - @IBOutlet weak var topStackView: UIStackView! + private var collectionView: UICollectionView! + private var segmentedControl: UISegmentedControl! + private let underTask = UnderTaskViewController() + private let futureTask = FutureTaskViewController() + private let totalTask = TotalTaskViewController() + + private var segmentView: UIScrollView! + + private let device = DeviceSizeUtil.shared + override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .mainBackground navigationItem.title = "样品记录" navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.mainTextColor] // Do any additional setup after loading the view. - topStackView.layer.cornerRadius = 10 - topStackView.layer.masksToBounds = true + + let layout = UICollectionViewFlowLayout() + // 宽高 + let collectionViewHeight = CGFloat(15) + SCREEN_WIDTH / 5 + layout.itemSize = CGSize(width: SCREEN_WIDTH / 5, height: collectionViewHeight) + collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: layout) + collectionView.register(UINib(nibName: "SampleCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "sampleCollectionViewCell") + collectionView.delegate = self + collectionView.dataSource = self + collectionView.backgroundColor = .white + collectionView.layer.cornerRadius = 10 + collectionView.layer.masksToBounds = true + collectionView.isScrollEnabled = false + view.addSubview(collectionView) + // 动态布局 + collectionView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.height.equalTo(collectionViewHeight) + make.top.equalTo(100) + } + + segmentedControl = UISegmentedControl(items: ["检定中", "预期任务", "全部"]) + segmentedControl.apportionsSegmentWidthsByContent = true + segmentedControl.selectedSegmentIndex = 0 + segmentedControl.addTarget(self, action: #selector(segmentedControlChanged(_:)), for: .valueChanged) + view.addSubview(segmentedControl) + segmentedControl.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.top.equalTo(collectionView.snp.bottom).offset(10) + } + // 定义一个视图用于存放具体显示的内容 + segmentView = UIScrollView() + segmentView.delegate = self + view.addSubview(segmentView) + + let safeAreaHeight = device.getSafeAreaFrame(self).height + let segmentViewHeight = safeAreaHeight - collectionViewHeight - segmentedControl.frame.height - 4 * 10 + segmentView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.height.equalTo(segmentViewHeight) + make.top.equalTo(segmentedControl.snp.bottom).offset(10) + } + + underTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + futureTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + totalTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + + //初始化一个页面 + segmentView.addSubview(underTask.view) } - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. + /// UISegmentedControl + @objc func segmentedControlChanged(_ sender: AnyObject?) { + let segment: UISegmentedControl = sender as! UISegmentedControl + for view in segmentView.subviews { + view.removeFromSuperview() + } + switch segment.selectedSegmentIndex { + case 0: + segmentView.addSubview(underTask.view) + case 1: + segmentView.addSubview(futureTask.view) + case 2: + segmentView.addSubview(totalTask.view) + default: + print("default ") + } } - */ + /// UICollectionView + // 显示多少个Item + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + SAMPLE_TITLE_ARRAY.count + } + + // 每个cell显示的内容 + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell: SampleCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "sampleCollectionViewCell", for: indexPath) as! SampleCollectionViewCell + cell.imageView.image = UIImage(named: SAMPLE_IMAGE_ARRAY[indexPath.row]) + cell.countView.text = "0" + cell.titleView.text = SAMPLE_TITLE_ARRAY[indexPath.row] + return cell + } } diff --git a/Meterage/ViewControllers/Sample/SamplePageViewController.xib b/Meterage/ViewControllers/Sample/SamplePageViewController.xib index b04c599..436f0ef 100644 --- a/Meterage/ViewControllers/Sample/SamplePageViewController.xib +++ b/Meterage/ViewControllers/Sample/SamplePageViewController.xib @@ -10,7 +10,6 @@ - @@ -18,22 +17,8 @@ - - - - - - - - - - - - - - diff --git a/Meterage/ViewControllers/Sample/TotalTaskViewController.swift b/Meterage/ViewControllers/Sample/TotalTaskViewController.swift new file mode 100644 index 0000000..814646c --- /dev/null +++ b/Meterage/ViewControllers/Sample/TotalTaskViewController.swift @@ -0,0 +1,29 @@ +// +// TotalTaskViewController.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class TotalTaskViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Meterage/ViewControllers/Sample/TotalTaskViewController.xib b/Meterage/ViewControllers/Sample/TotalTaskViewController.xib new file mode 100644 index 0000000..ce3915a --- /dev/null +++ b/Meterage/ViewControllers/Sample/TotalTaskViewController.xib @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate index 9abdbfd..6305059 100644 --- a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ diff --git a/Meterage/Cells/SampleCollectionViewCell.swift b/Meterage/Cells/SampleCollectionViewCell.swift new file mode 100644 index 0000000..63a1da3 --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.swift @@ -0,0 +1,21 @@ +// +// SampleCollectionViewCell.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class SampleCollectionViewCell: UICollectionViewCell { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var countView: UILabel! + @IBOutlet weak var titleView: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Meterage/Cells/SampleCollectionViewCell.xib b/Meterage/Cells/SampleCollectionViewCell.xib new file mode 100644 index 0000000..e38646a --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/Utils/Constant.swift b/Meterage/Utils/Constant.swift index a39de1a..464e70d 100644 --- a/Meterage/Utils/Constant.swift +++ b/Meterage/Utils/Constant.swift @@ -21,6 +21,8 @@ let MINE_TITLE_ARRAY = ["账户信息", "我的收藏", "推送设置", "隐私设置", "使用帮助", "版本更新", "关于APP", "意见反馈"] let MINE_IMAGE_ARRAY = ["account", "collection", "push_setting", "privacy_setting", "help", "update", "about", "feed_back"] let HOME_FUNC_OPERATE = ["仪器设备", "标准装置", "证书报告", "委托需求", "访客", "标准规范", "能力列表", "计量培训", "合同发票", "业务统计", "客户列表", "外场检测"] +let SAMPLE_TITLE_ARRAY = ["已超期", "已检定", "检定总计", "样品总数"] +let SAMPLE_IMAGE_ARRAY = ["overtime", "verified", "total_verify", "total_sample"] public enum Constant: String { // 网络请求相关的地址 diff --git a/Meterage/Utils/DeviceSizeUtil.swift b/Meterage/Utils/DeviceSizeUtil.swift new file mode 100644 index 0000000..caaabbc --- /dev/null +++ b/Meterage/Utils/DeviceSizeUtil.swift @@ -0,0 +1,38 @@ +// +// DeviceSizeUtil.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import Foundation +import UIKit + +class DeviceSizeUtil { + public static var shared = DeviceSizeUtil() + + func getSafeAreaFrame(_ viewController:UIViewController) -> CGRect { + let isIphoneX = UIScreen.main.bounds.height >= 812 ? true : false + + var navigationBarHeight:CGFloat = isIphoneX ? 44 : 20 + var tabBarHeight:CGFloat = isIphoneX ? 34 : 0 + + //标志导航视图控制器是否存在 默认不存在 + //为什么需要这个? + //这里有个坑,当没有导航栏时,如果是iPhoneX等设备,tabBar.frame.height = 49 会不包含底部返回条的高度(34), 存在导航栏时 tabBar.frame.height = 83 + var noNavigationExists = true + + if let navigation = viewController.navigationController { + noNavigationExists = false + navigationBarHeight = navigationBarHeight + CGFloat(navigation.navigationBar.frame.height) + } + if let tabBarController = viewController.tabBarController { + tabBarHeight = noNavigationExists ? tabBarHeight : 0 + tabBarHeight = tabBarHeight + CGFloat(tabBarController.tabBar.frame.height) + } + + let frame = CGRect(x: 0, y: navigationBarHeight, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarHeight - navigationBarHeight) + + return frame + } +} diff --git a/Meterage/ViewControllers/Home/HomePageViewController.swift b/Meterage/ViewControllers/Home/HomePageViewController.swift index 4248f4c..2cedf18 100644 --- a/Meterage/ViewControllers/Home/HomePageViewController.swift +++ b/Meterage/ViewControllers/Home/HomePageViewController.swift @@ -26,6 +26,7 @@ private let keyboardManager = IQKeyboardManager.shared private let defaults = Defaults.shared + private let device = DeviceSizeUtil.shared override func viewDidLoad() { super.viewDidLoad() @@ -77,12 +78,12 @@ collectionView.isScrollEnabled = false view.addSubview(collectionView) // 计算View高度 - let viewHeight = 3 * Int(layout.itemSize.height) + let collectionViewHeight = CGFloat(3 * Int(layout.itemSize.height)) // 动态布局 collectionView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) - make.height.equalTo(viewHeight) + make.height.equalTo(collectionViewHeight) // 距离searchBorderView底部10 make.top.equalTo(searchBorderView.snp.bottom).offset(10) } @@ -106,7 +107,9 @@ reminderContentView.backgroundColor = .white view.addSubview(reminderContentView) // 计算View高度 - let reminderViewHeight = SCREEN_HEIGHT - searchBorderView.bounds.height - CGFloat(viewHeight) - noticeLayout.bounds.height - 3.5 * (navigationController?.navigationBar.frame.size.height)! - CGFloat(10) + let safeAreaHeight = device.getSafeAreaFrame(self).height + // Home页没有navigationBar,高度需要加上34 + let reminderViewHeight = safeAreaHeight - searchBorderView.bounds.height - collectionViewHeight - noticeLayout.bounds.height - 3 * 10 + 34 reminderContentView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) diff --git a/Meterage/ViewControllers/Login/LoginViewController.swift b/Meterage/ViewControllers/Login/LoginViewController.swift index d66d593..017e18b 100644 --- a/Meterage/ViewControllers/Login/LoginViewController.swift +++ b/Meterage/ViewControllers/Login/LoginViewController.swift @@ -93,6 +93,7 @@ } case .failure: AlertHub.shared.showWaringAlert(controller: self, message: "检验失败,无法登陆") + LoadingHub.shared.hideLoading() } } } diff --git a/Meterage/ViewControllers/Sample/FutureTaskViewController.swift b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift new file mode 100644 index 0000000..32e330f --- /dev/null +++ b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift @@ -0,0 +1,29 @@ +// +// FutureTaskViewController.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class FutureTaskViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Meterage/ViewControllers/Sample/FutureTaskViewController.xib b/Meterage/ViewControllers/Sample/FutureTaskViewController.xib new file mode 100644 index 0000000..de82b56 --- /dev/null +++ b/Meterage/ViewControllers/Sample/FutureTaskViewController.xib @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/ViewControllers/Sample/SamplePageViewController.swift b/Meterage/ViewControllers/Sample/SamplePageViewController.swift index 7bcf375..597ece0 100644 --- a/Meterage/ViewControllers/Sample/SamplePageViewController.swift +++ b/Meterage/ViewControllers/Sample/SamplePageViewController.swift @@ -7,29 +7,109 @@ import UIKit -class SamplePageViewController: UIViewController { +class SamplePageViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UIScrollViewDelegate { - @IBOutlet weak var topStackView: UIStackView! + private var collectionView: UICollectionView! + private var segmentedControl: UISegmentedControl! + private let underTask = UnderTaskViewController() + private let futureTask = FutureTaskViewController() + private let totalTask = TotalTaskViewController() + + private var segmentView: UIScrollView! + + private let device = DeviceSizeUtil.shared + override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .mainBackground navigationItem.title = "样品记录" navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.mainTextColor] // Do any additional setup after loading the view. - topStackView.layer.cornerRadius = 10 - topStackView.layer.masksToBounds = true + + let layout = UICollectionViewFlowLayout() + // 宽高 + let collectionViewHeight = CGFloat(15) + SCREEN_WIDTH / 5 + layout.itemSize = CGSize(width: SCREEN_WIDTH / 5, height: collectionViewHeight) + collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: layout) + collectionView.register(UINib(nibName: "SampleCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "sampleCollectionViewCell") + collectionView.delegate = self + collectionView.dataSource = self + collectionView.backgroundColor = .white + collectionView.layer.cornerRadius = 10 + collectionView.layer.masksToBounds = true + collectionView.isScrollEnabled = false + view.addSubview(collectionView) + // 动态布局 + collectionView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.height.equalTo(collectionViewHeight) + make.top.equalTo(100) + } + + segmentedControl = UISegmentedControl(items: ["检定中", "预期任务", "全部"]) + segmentedControl.apportionsSegmentWidthsByContent = true + segmentedControl.selectedSegmentIndex = 0 + segmentedControl.addTarget(self, action: #selector(segmentedControlChanged(_:)), for: .valueChanged) + view.addSubview(segmentedControl) + segmentedControl.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.top.equalTo(collectionView.snp.bottom).offset(10) + } + // 定义一个视图用于存放具体显示的内容 + segmentView = UIScrollView() + segmentView.delegate = self + view.addSubview(segmentView) + + let safeAreaHeight = device.getSafeAreaFrame(self).height + let segmentViewHeight = safeAreaHeight - collectionViewHeight - segmentedControl.frame.height - 4 * 10 + segmentView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.height.equalTo(segmentViewHeight) + make.top.equalTo(segmentedControl.snp.bottom).offset(10) + } + + underTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + futureTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + totalTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + + //初始化一个页面 + segmentView.addSubview(underTask.view) } - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. + /// UISegmentedControl + @objc func segmentedControlChanged(_ sender: AnyObject?) { + let segment: UISegmentedControl = sender as! UISegmentedControl + for view in segmentView.subviews { + view.removeFromSuperview() + } + switch segment.selectedSegmentIndex { + case 0: + segmentView.addSubview(underTask.view) + case 1: + segmentView.addSubview(futureTask.view) + case 2: + segmentView.addSubview(totalTask.view) + default: + print("default ") + } } - */ + /// UICollectionView + // 显示多少个Item + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + SAMPLE_TITLE_ARRAY.count + } + + // 每个cell显示的内容 + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell: SampleCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "sampleCollectionViewCell", for: indexPath) as! SampleCollectionViewCell + cell.imageView.image = UIImage(named: SAMPLE_IMAGE_ARRAY[indexPath.row]) + cell.countView.text = "0" + cell.titleView.text = SAMPLE_TITLE_ARRAY[indexPath.row] + return cell + } } diff --git a/Meterage/ViewControllers/Sample/SamplePageViewController.xib b/Meterage/ViewControllers/Sample/SamplePageViewController.xib index b04c599..436f0ef 100644 --- a/Meterage/ViewControllers/Sample/SamplePageViewController.xib +++ b/Meterage/ViewControllers/Sample/SamplePageViewController.xib @@ -10,7 +10,6 @@ - @@ -18,22 +17,8 @@ - - - - - - - - - - - - - - diff --git a/Meterage/ViewControllers/Sample/TotalTaskViewController.swift b/Meterage/ViewControllers/Sample/TotalTaskViewController.swift new file mode 100644 index 0000000..814646c --- /dev/null +++ b/Meterage/ViewControllers/Sample/TotalTaskViewController.swift @@ -0,0 +1,29 @@ +// +// TotalTaskViewController.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class TotalTaskViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Meterage/ViewControllers/Sample/TotalTaskViewController.xib b/Meterage/ViewControllers/Sample/TotalTaskViewController.xib new file mode 100644 index 0000000..ce3915a --- /dev/null +++ b/Meterage/ViewControllers/Sample/TotalTaskViewController.xib @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/ViewControllers/Sample/UnderTaskViewController.swift b/Meterage/ViewControllers/Sample/UnderTaskViewController.swift new file mode 100644 index 0000000..86f3918 --- /dev/null +++ b/Meterage/ViewControllers/Sample/UnderTaskViewController.swift @@ -0,0 +1,29 @@ +// +// UnderTaskViewController.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class UnderTaskViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Meterage.xcodeproj/project.pbxproj b/Meterage.xcodeproj/project.pbxproj index f1ffedf..64e4235 100644 --- a/Meterage.xcodeproj/project.pbxproj +++ b/Meterage.xcodeproj/project.pbxproj @@ -15,6 +15,15 @@ 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */; }; 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */; }; 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */; }; + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */; }; + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */; }; + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E27298D179300093341 /* UnderTaskViewController.swift */; }; + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E28298D179300093341 /* UnderTaskViewController.xib */; }; + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */; }; + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */; }; + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */; }; + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */; }; + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */; }; 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */; }; 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */; }; 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */; }; @@ -52,6 +61,15 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomeCollectionViewCell.xib; sourceTree = ""; }; 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderTableViewCell.swift; sourceTree = ""; }; 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReminderTableViewCell.xib; sourceTree = ""; }; + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleCollectionViewCell.swift; sourceTree = ""; }; + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SampleCollectionViewCell.xib; sourceTree = ""; }; + 65A55E27298D179300093341 /* UnderTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderTaskViewController.swift; sourceTree = ""; }; + 65A55E28298D179300093341 /* UnderTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UnderTaskViewController.xib; sourceTree = ""; }; + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FutureTaskViewController.swift; sourceTree = ""; }; + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FutureTaskViewController.xib; sourceTree = ""; }; + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TotalTaskViewController.swift; sourceTree = ""; }; + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TotalTaskViewController.xib; sourceTree = ""; }; + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceSizeUtil.swift; sourceTree = ""; }; 65AEA683298A5F9500B8FF09 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; 65AEA68E298A632B00B8FF09 /* HomePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomePageViewController.swift; sourceTree = ""; }; 65AEA68F298A632B00B8FF09 /* HomePageViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HomePageViewController.xib; sourceTree = ""; }; @@ -169,6 +187,12 @@ children = ( 65AEA692298A633E00B8FF09 /* SamplePageViewController.swift */, 65AEA693298A633E00B8FF09 /* SamplePageViewController.xib */, + 65A55E27298D179300093341 /* UnderTaskViewController.swift */, + 65A55E28298D179300093341 /* UnderTaskViewController.xib */, + 65A55E2B298D17A100093341 /* FutureTaskViewController.swift */, + 65A55E2C298D17A100093341 /* FutureTaskViewController.xib */, + 65A55E2F298D17AD00093341 /* TotalTaskViewController.swift */, + 65A55E30298D17AD00093341 /* TotalTaskViewController.xib */, ); path = Sample; sourceTree = ""; @@ -229,6 +253,7 @@ 65AEA6AD298B614100B8FF09 /* AlertHub.swift */, 65AEA6AF298B62D900B8FF09 /* LoadingHub.swift */, 2CD9B6CEF9BEA88482C5ADB8 /* HttpRequestCreator.swift */, + 65A55E33298D2BE900093341 /* DeviceSizeUtil.swift */, ); path = Utils; sourceTree = ""; @@ -242,6 +267,8 @@ 6531D7C5298CB45500C4B343 /* HomeCollectionViewCell.xib */, 65A55E1F298D00BE00093341 /* ReminderTableViewCell.swift */, 65A55E20298D00BE00093341 /* ReminderTableViewCell.xib */, + 65A55E23298D0A2000093341 /* SampleCollectionViewCell.swift */, + 65A55E24298D0A2000093341 /* SampleCollectionViewCell.xib */, ); path = Cells; sourceTree = ""; @@ -300,11 +327,15 @@ buildActionMask = 2147483647; files = ( 65AEA695298A633E00B8FF09 /* SamplePageViewController.xib in Resources */, + 65A55E2A298D179300093341 /* UnderTaskViewController.xib in Resources */, 65AEA6A9298A69D500B8FF09 /* GuideViewController.xib in Resources */, 65BF61D4298BC0A900F99671 /* MineTableViewCell.xib in Resources */, 6531D7C7298CB45500C4B343 /* HomeCollectionViewCell.xib in Resources */, 65AEA691298A632B00B8FF09 /* HomePageViewController.xib in Resources */, + 65A55E2E298D17A100093341 /* FutureTaskViewController.xib in Resources */, 65A55E22298D00BE00093341 /* ReminderTableViewCell.xib in Resources */, + 65A55E32298D17AD00093341 /* TotalTaskViewController.xib in Resources */, + 65A55E26298D0A2000093341 /* SampleCollectionViewCell.xib in Resources */, 2CD9B5D17F91A33743878C1A /* Assets.xcassets in Resources */, 65AEA69E298A649F00B8FF09 /* LoginViewController.xib in Resources */, 65AEA699298A634D00B8FF09 /* MineViewController.xib in Resources */, @@ -389,12 +420,15 @@ files = ( 65AEA6AE298B614100B8FF09 /* AlertHub.swift in Sources */, 65AEA69D298A649F00B8FF09 /* LoginViewController.swift in Sources */, + 65A55E31298D17AD00093341 /* TotalTaskViewController.swift in Sources */, 65AEA6A1298A64EE00B8FF09 /* UIColor.swift in Sources */, 65AEA6B2298B642400B8FF09 /* BaseConfigModel.swift in Sources */, 65AEA6A8298A69D500B8FF09 /* GuideViewController.swift in Sources */, 65AEA684298A5F9500B8FF09 /* AppCoordinator.swift in Sources */, + 65A55E2D298D17A100093341 /* FutureTaskViewController.swift in Sources */, 65BF61D3298BC0A900F99671 /* MineTableViewCell.swift in Sources */, 65AEA6B4298B64DC00B8FF09 /* LoginResultModel.swift in Sources */, + 65A55E25298D0A2000093341 /* SampleCollectionViewCell.swift in Sources */, 65AEA6A4298A652700B8FF09 /* MenuItemModel.swift in Sources */, 2CD9B9317E39E14700E7C9C2 /* AppDelegate.swift in Sources */, 65AEA690298A632B00B8FF09 /* HomePageViewController.swift in Sources */, @@ -402,11 +436,13 @@ 65AEA6AC298B613400B8FF09 /* Constant.swift in Sources */, 65AEA6B6298B655E00B8FF09 /* String.swift in Sources */, 6531D7C6298CB45500C4B343 /* HomeCollectionViewCell.swift in Sources */, + 65A55E29298D179300093341 /* UnderTaskViewController.swift in Sources */, 65AEA694298A633E00B8FF09 /* SamplePageViewController.swift in Sources */, 65AEA698298A634D00B8FF09 /* MineViewController.swift in Sources */, 65A55E21298D00BE00093341 /* ReminderTableViewCell.swift in Sources */, 2CD9B8A8FED825F0E1B79C36 /* Dictionary.swift in Sources */, 2CD9B472817F36562709487F /* HttpRequestCreator.swift in Sources */, + 65A55E34298D2BE900093341 /* DeviceSizeUtil.swift in Sources */, 65BF61D6298BD40900F99671 /* UserInfoModel.swift in Sources */, 65BF61D8298C915C00F99671 /* NoticeListModel.swift in Sources */, ); diff --git a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate index 9abdbfd..6305059 100644 --- a/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate +++ b/Meterage.xcworkspace/xcuserdata/a203.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ diff --git a/Meterage/Cells/SampleCollectionViewCell.swift b/Meterage/Cells/SampleCollectionViewCell.swift new file mode 100644 index 0000000..63a1da3 --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.swift @@ -0,0 +1,21 @@ +// +// SampleCollectionViewCell.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class SampleCollectionViewCell: UICollectionViewCell { + + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var countView: UILabel! + @IBOutlet weak var titleView: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Meterage/Cells/SampleCollectionViewCell.xib b/Meterage/Cells/SampleCollectionViewCell.xib new file mode 100644 index 0000000..e38646a --- /dev/null +++ b/Meterage/Cells/SampleCollectionViewCell.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/Utils/Constant.swift b/Meterage/Utils/Constant.swift index a39de1a..464e70d 100644 --- a/Meterage/Utils/Constant.swift +++ b/Meterage/Utils/Constant.swift @@ -21,6 +21,8 @@ let MINE_TITLE_ARRAY = ["账户信息", "我的收藏", "推送设置", "隐私设置", "使用帮助", "版本更新", "关于APP", "意见反馈"] let MINE_IMAGE_ARRAY = ["account", "collection", "push_setting", "privacy_setting", "help", "update", "about", "feed_back"] let HOME_FUNC_OPERATE = ["仪器设备", "标准装置", "证书报告", "委托需求", "访客", "标准规范", "能力列表", "计量培训", "合同发票", "业务统计", "客户列表", "外场检测"] +let SAMPLE_TITLE_ARRAY = ["已超期", "已检定", "检定总计", "样品总数"] +let SAMPLE_IMAGE_ARRAY = ["overtime", "verified", "total_verify", "total_sample"] public enum Constant: String { // 网络请求相关的地址 diff --git a/Meterage/Utils/DeviceSizeUtil.swift b/Meterage/Utils/DeviceSizeUtil.swift new file mode 100644 index 0000000..caaabbc --- /dev/null +++ b/Meterage/Utils/DeviceSizeUtil.swift @@ -0,0 +1,38 @@ +// +// DeviceSizeUtil.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import Foundation +import UIKit + +class DeviceSizeUtil { + public static var shared = DeviceSizeUtil() + + func getSafeAreaFrame(_ viewController:UIViewController) -> CGRect { + let isIphoneX = UIScreen.main.bounds.height >= 812 ? true : false + + var navigationBarHeight:CGFloat = isIphoneX ? 44 : 20 + var tabBarHeight:CGFloat = isIphoneX ? 34 : 0 + + //标志导航视图控制器是否存在 默认不存在 + //为什么需要这个? + //这里有个坑,当没有导航栏时,如果是iPhoneX等设备,tabBar.frame.height = 49 会不包含底部返回条的高度(34), 存在导航栏时 tabBar.frame.height = 83 + var noNavigationExists = true + + if let navigation = viewController.navigationController { + noNavigationExists = false + navigationBarHeight = navigationBarHeight + CGFloat(navigation.navigationBar.frame.height) + } + if let tabBarController = viewController.tabBarController { + tabBarHeight = noNavigationExists ? tabBarHeight : 0 + tabBarHeight = tabBarHeight + CGFloat(tabBarController.tabBar.frame.height) + } + + let frame = CGRect(x: 0, y: navigationBarHeight, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarHeight - navigationBarHeight) + + return frame + } +} diff --git a/Meterage/ViewControllers/Home/HomePageViewController.swift b/Meterage/ViewControllers/Home/HomePageViewController.swift index 4248f4c..2cedf18 100644 --- a/Meterage/ViewControllers/Home/HomePageViewController.swift +++ b/Meterage/ViewControllers/Home/HomePageViewController.swift @@ -26,6 +26,7 @@ private let keyboardManager = IQKeyboardManager.shared private let defaults = Defaults.shared + private let device = DeviceSizeUtil.shared override func viewDidLoad() { super.viewDidLoad() @@ -77,12 +78,12 @@ collectionView.isScrollEnabled = false view.addSubview(collectionView) // 计算View高度 - let viewHeight = 3 * Int(layout.itemSize.height) + let collectionViewHeight = CGFloat(3 * Int(layout.itemSize.height)) // 动态布局 collectionView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) - make.height.equalTo(viewHeight) + make.height.equalTo(collectionViewHeight) // 距离searchBorderView底部10 make.top.equalTo(searchBorderView.snp.bottom).offset(10) } @@ -106,7 +107,9 @@ reminderContentView.backgroundColor = .white view.addSubview(reminderContentView) // 计算View高度 - let reminderViewHeight = SCREEN_HEIGHT - searchBorderView.bounds.height - CGFloat(viewHeight) - noticeLayout.bounds.height - 3.5 * (navigationController?.navigationBar.frame.size.height)! - CGFloat(10) + let safeAreaHeight = device.getSafeAreaFrame(self).height + // Home页没有navigationBar,高度需要加上34 + let reminderViewHeight = safeAreaHeight - searchBorderView.bounds.height - collectionViewHeight - noticeLayout.bounds.height - 3 * 10 + 34 reminderContentView.snp.makeConstraints { make in make.centerX.equalToSuperview() make.width.equalTo(SCREEN_WIDTH - 20) diff --git a/Meterage/ViewControllers/Login/LoginViewController.swift b/Meterage/ViewControllers/Login/LoginViewController.swift index d66d593..017e18b 100644 --- a/Meterage/ViewControllers/Login/LoginViewController.swift +++ b/Meterage/ViewControllers/Login/LoginViewController.swift @@ -93,6 +93,7 @@ } case .failure: AlertHub.shared.showWaringAlert(controller: self, message: "检验失败,无法登陆") + LoadingHub.shared.hideLoading() } } } diff --git a/Meterage/ViewControllers/Sample/FutureTaskViewController.swift b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift new file mode 100644 index 0000000..32e330f --- /dev/null +++ b/Meterage/ViewControllers/Sample/FutureTaskViewController.swift @@ -0,0 +1,29 @@ +// +// FutureTaskViewController.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class FutureTaskViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Meterage/ViewControllers/Sample/FutureTaskViewController.xib b/Meterage/ViewControllers/Sample/FutureTaskViewController.xib new file mode 100644 index 0000000..de82b56 --- /dev/null +++ b/Meterage/ViewControllers/Sample/FutureTaskViewController.xib @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/ViewControllers/Sample/SamplePageViewController.swift b/Meterage/ViewControllers/Sample/SamplePageViewController.swift index 7bcf375..597ece0 100644 --- a/Meterage/ViewControllers/Sample/SamplePageViewController.swift +++ b/Meterage/ViewControllers/Sample/SamplePageViewController.swift @@ -7,29 +7,109 @@ import UIKit -class SamplePageViewController: UIViewController { +class SamplePageViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UIScrollViewDelegate { - @IBOutlet weak var topStackView: UIStackView! + private var collectionView: UICollectionView! + private var segmentedControl: UISegmentedControl! + private let underTask = UnderTaskViewController() + private let futureTask = FutureTaskViewController() + private let totalTask = TotalTaskViewController() + + private var segmentView: UIScrollView! + + private let device = DeviceSizeUtil.shared + override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .mainBackground navigationItem.title = "样品记录" navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.mainTextColor] // Do any additional setup after loading the view. - topStackView.layer.cornerRadius = 10 - topStackView.layer.masksToBounds = true + + let layout = UICollectionViewFlowLayout() + // 宽高 + let collectionViewHeight = CGFloat(15) + SCREEN_WIDTH / 5 + layout.itemSize = CGSize(width: SCREEN_WIDTH / 5, height: collectionViewHeight) + collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: layout) + collectionView.register(UINib(nibName: "SampleCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "sampleCollectionViewCell") + collectionView.delegate = self + collectionView.dataSource = self + collectionView.backgroundColor = .white + collectionView.layer.cornerRadius = 10 + collectionView.layer.masksToBounds = true + collectionView.isScrollEnabled = false + view.addSubview(collectionView) + // 动态布局 + collectionView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.height.equalTo(collectionViewHeight) + make.top.equalTo(100) + } + + segmentedControl = UISegmentedControl(items: ["检定中", "预期任务", "全部"]) + segmentedControl.apportionsSegmentWidthsByContent = true + segmentedControl.selectedSegmentIndex = 0 + segmentedControl.addTarget(self, action: #selector(segmentedControlChanged(_:)), for: .valueChanged) + view.addSubview(segmentedControl) + segmentedControl.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.top.equalTo(collectionView.snp.bottom).offset(10) + } + // 定义一个视图用于存放具体显示的内容 + segmentView = UIScrollView() + segmentView.delegate = self + view.addSubview(segmentView) + + let safeAreaHeight = device.getSafeAreaFrame(self).height + let segmentViewHeight = safeAreaHeight - collectionViewHeight - segmentedControl.frame.height - 4 * 10 + segmentView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.width.equalTo(SCREEN_WIDTH - 20) + make.height.equalTo(segmentViewHeight) + make.top.equalTo(segmentedControl.snp.bottom).offset(10) + } + + underTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + futureTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + totalTask.view.frame = CGRect(x: 0, y: 0, width: (SCREEN_WIDTH - 20), height: segmentViewHeight) + + //初始化一个页面 + segmentView.addSubview(underTask.view) } - - /* - // MARK: - Navigation - - // In a storyboard-based application, you will often want to do a little preparation before navigation - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { - // Get the new view controller using segue.destination. - // Pass the selected object to the new view controller. + /// UISegmentedControl + @objc func segmentedControlChanged(_ sender: AnyObject?) { + let segment: UISegmentedControl = sender as! UISegmentedControl + for view in segmentView.subviews { + view.removeFromSuperview() + } + switch segment.selectedSegmentIndex { + case 0: + segmentView.addSubview(underTask.view) + case 1: + segmentView.addSubview(futureTask.view) + case 2: + segmentView.addSubview(totalTask.view) + default: + print("default ") + } } - */ + /// UICollectionView + // 显示多少个Item + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + SAMPLE_TITLE_ARRAY.count + } + + // 每个cell显示的内容 + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell: SampleCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "sampleCollectionViewCell", for: indexPath) as! SampleCollectionViewCell + cell.imageView.image = UIImage(named: SAMPLE_IMAGE_ARRAY[indexPath.row]) + cell.countView.text = "0" + cell.titleView.text = SAMPLE_TITLE_ARRAY[indexPath.row] + return cell + } } diff --git a/Meterage/ViewControllers/Sample/SamplePageViewController.xib b/Meterage/ViewControllers/Sample/SamplePageViewController.xib index b04c599..436f0ef 100644 --- a/Meterage/ViewControllers/Sample/SamplePageViewController.xib +++ b/Meterage/ViewControllers/Sample/SamplePageViewController.xib @@ -10,7 +10,6 @@ - @@ -18,22 +17,8 @@ - - - - - - - - - - - - - - diff --git a/Meterage/ViewControllers/Sample/TotalTaskViewController.swift b/Meterage/ViewControllers/Sample/TotalTaskViewController.swift new file mode 100644 index 0000000..814646c --- /dev/null +++ b/Meterage/ViewControllers/Sample/TotalTaskViewController.swift @@ -0,0 +1,29 @@ +// +// TotalTaskViewController.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class TotalTaskViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Meterage/ViewControllers/Sample/TotalTaskViewController.xib b/Meterage/ViewControllers/Sample/TotalTaskViewController.xib new file mode 100644 index 0000000..ce3915a --- /dev/null +++ b/Meterage/ViewControllers/Sample/TotalTaskViewController.xib @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meterage/ViewControllers/Sample/UnderTaskViewController.swift b/Meterage/ViewControllers/Sample/UnderTaskViewController.swift new file mode 100644 index 0000000..86f3918 --- /dev/null +++ b/Meterage/ViewControllers/Sample/UnderTaskViewController.swift @@ -0,0 +1,29 @@ +// +// UnderTaskViewController.swift +// Meterage +// +// Created by 203 on 2023/2/3. +// + +import UIKit + +class UnderTaskViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Meterage/ViewControllers/Sample/UnderTaskViewController.xib b/Meterage/ViewControllers/Sample/UnderTaskViewController.xib new file mode 100644 index 0000000..f8e7b9e --- /dev/null +++ b/Meterage/ViewControllers/Sample/UnderTaskViewController.xib @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +