- Handled the star and moon to show only at the night time.

- Added a star above the grass and added it to the animation.
- Woke Client call 1:15 - 1:40
- Added Sidebar theme clicks and added userdefaults with checks for default loading. Also added to logout
- Handled the Theme change from sidebar, also handled the default theme selected and loading it at the time of startup
- Fixed issue of sidebar showing up, left side blacktint was not coming. It was the issue of ViewLifeCycle
- Theme 2  Explore woka items size ratio updated for auto layouts
- Worked on RootView Navigation.
This commit is contained in:
2024-05-27 19:42:56 +05:30
parent 025aa41585
commit 0e921c3113
66 changed files with 808 additions and 362 deletions

View File

@@ -9,16 +9,6 @@
/* Begin PBXBuildFile section */
5202AAFE2BDF90590043B7BD /* TextFieldImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5202AAFD2BDF90590043B7BD /* TextFieldImage.swift */; };
5202AB012BDFA7900043B7BD /* EmailValidation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5202AB002BDFA7900043B7BD /* EmailValidation.swift */; };
522242592BFC73E40085C632 /* BasicTransitionAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5222424D2BFC73E40085C632 /* BasicTransitionAnimator.swift */; };
5222425A2BFC73E40085C632 /* Delegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5222424E2BFC73E40085C632 /* Delegate.swift */; };
5222425B2BFC73E40085C632 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5222424F2BFC73E40085C632 /* Preferences.swift */; };
5222425C2BFC73E40085C632 /* Segue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522242502BFC73E40085C632 /* Segue.swift */; };
5222425D2BFC73E40085C632 /* SideMenuController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522242522BFC73E40085C632 /* SideMenuController.swift */; };
5222425E2BFC73E40085C632 /* StatusBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522242532BFC73E40085C632 /* StatusBar.swift */; };
5222425F2BFC73E40085C632 /* TransitionContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522242542BFC73E40085C632 /* TransitionContext.swift */; };
522242602BFC73E40085C632 /* UIView+Container.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522242552BFC73E40085C632 /* UIView+Container.swift */; };
522242612BFC73E40085C632 /* UIViewController+Container.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522242562BFC73E40085C632 /* UIViewController+Container.swift */; };
522242622BFC73E40085C632 /* UIViewController+SideMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522242572BFC73E40085C632 /* UIViewController+SideMenu.swift */; };
522242662BFC74380085C632 /* MyListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522242632BFC74380085C632 /* MyListVC.swift */; };
522242682BFC74380085C632 /* TabBarVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522242652BFC74380085C632 /* TabBarVC.swift */; };
5222426A2BFC7AFC0085C632 /* SideMenuVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522242692BFC7AFC0085C632 /* SideMenuVC.swift */; };
@@ -31,6 +21,9 @@
523ED2752BDA2BC900CFED02 /* WOKATests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 523ED2742BDA2BC900CFED02 /* WOKATests.swift */; };
523ED27F2BDA2BC900CFED02 /* WOKAUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 523ED27E2BDA2BC900CFED02 /* WOKAUITests.swift */; };
523ED2812BDA2BC900CFED02 /* WOKAUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 523ED2802BDA2BC900CFED02 /* WOKAUITestsLaunchTests.swift */; };
524C422B2C04781B0016A11C /* ThemeTwoVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 524C422A2C04781B0016A11C /* ThemeTwoVM.swift */; };
524C42312C0499560016A11C /* NotificationCenterReloads.swift in Sources */ = {isa = PBXBuildFile; fileRef = 524C42302C0499560016A11C /* NotificationCenterReloads.swift */; };
524C42332C049D590016A11C /* CustomizableSegmentControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 524C42322C049D590016A11C /* CustomizableSegmentControl.swift */; };
525327D02BFCBC4A00F64283 /* ExploreWokaVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525327CF2BFCBC4A00F64283 /* ExploreWokaVC.swift */; };
525327D62BFCC23600F64283 /* SideMenuVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525327D52BFCC23600F64283 /* SideMenuVM.swift */; };
525327D92BFCDDF700F64283 /* AuthFuncStartupSoundHandling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525327D82BFCDDF700F64283 /* AuthFuncStartupSoundHandling.swift */; };
@@ -77,6 +70,16 @@
52A3F6AB2BECBF550000BB0B /* LinkedChildVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52A3F6AA2BECBF550000BB0B /* LinkedChildVC.swift */; };
52A3F6AD2BECC0340000BB0B /* TypeAlias.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52A3F6AC2BECC0340000BB0B /* TypeAlias.swift */; };
52A3F6AF2BECC0690000BB0B /* LinkedChildVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52A3F6AE2BECC0690000BB0B /* LinkedChildVM.swift */; };
52B8D4D92C04A25E00ED65F3 /* UIViewController+Container.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B8D4CE2C04A25D00ED65F3 /* UIViewController+Container.swift */; };
52B8D4DA2C04A25E00ED65F3 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B8D4CF2C04A25D00ED65F3 /* Preferences.swift */; };
52B8D4DB2C04A25E00ED65F3 /* TransitionContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B8D4D02C04A25D00ED65F3 /* TransitionContext.swift */; };
52B8D4DC2C04A25E00ED65F3 /* Delegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B8D4D12C04A25D00ED65F3 /* Delegate.swift */; };
52B8D4DD2C04A25E00ED65F3 /* UIViewController+SideMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B8D4D32C04A25D00ED65F3 /* UIViewController+SideMenu.swift */; };
52B8D4DE2C04A25E00ED65F3 /* SideMenuController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B8D4D42C04A25D00ED65F3 /* SideMenuController.swift */; };
52B8D4DF2C04A25E00ED65F3 /* StatusBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B8D4D52C04A25D00ED65F3 /* StatusBar.swift */; };
52B8D4E02C04A25E00ED65F3 /* UIView+Container.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B8D4D62C04A25D00ED65F3 /* UIView+Container.swift */; };
52B8D4E12C04A25E00ED65F3 /* BasicTransitionAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B8D4D72C04A25E00ED65F3 /* BasicTransitionAnimator.swift */; };
52B8D4E22C04A25E00ED65F3 /* Segue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B8D4D82C04A25E00ED65F3 /* Segue.swift */; };
52C6E01B2BE383C000E22D59 /* YourIntrestCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52C6E0192BE383C000E22D59 /* YourIntrestCell.swift */; };
52C6E01C2BE383C000E22D59 /* YourIntrestCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 52C6E01A2BE383C000E22D59 /* YourIntrestCell.xib */; };
52C6E01E2BE3847F00E22D59 /* BorderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52C6E01D2BE3847F00E22D59 /* BorderView.swift */; };
@@ -168,17 +171,6 @@
26B5FF3DFDEFA683C1B79490 /* Pods-WOKA.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WOKA.debug.xcconfig"; path = "Target Support Files/Pods-WOKA/Pods-WOKA.debug.xcconfig"; sourceTree = "<group>"; };
5202AAFD2BDF90590043B7BD /* TextFieldImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextFieldImage.swift; sourceTree = "<group>"; };
5202AB002BDFA7900043B7BD /* EmailValidation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmailValidation.swift; sourceTree = "<group>"; };
5222424D2BFC73E40085C632 /* BasicTransitionAnimator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasicTransitionAnimator.swift; sourceTree = "<group>"; };
5222424E2BFC73E40085C632 /* Delegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Delegate.swift; sourceTree = "<group>"; };
5222424F2BFC73E40085C632 /* Preferences.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = "<group>"; };
522242502BFC73E40085C632 /* Segue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Segue.swift; sourceTree = "<group>"; };
522242512BFC73E40085C632 /* SideMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SideMenu.h; sourceTree = "<group>"; };
522242522BFC73E40085C632 /* SideMenuController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SideMenuController.swift; sourceTree = "<group>"; };
522242532BFC73E40085C632 /* StatusBar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatusBar.swift; sourceTree = "<group>"; };
522242542BFC73E40085C632 /* TransitionContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransitionContext.swift; sourceTree = "<group>"; };
522242552BFC73E40085C632 /* UIView+Container.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Container.swift"; sourceTree = "<group>"; };
522242562BFC73E40085C632 /* UIViewController+Container.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewController+Container.swift"; sourceTree = "<group>"; };
522242572BFC73E40085C632 /* UIViewController+SideMenu.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewController+SideMenu.swift"; sourceTree = "<group>"; };
522242632BFC74380085C632 /* MyListVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MyListVC.swift; sourceTree = "<group>"; };
522242652BFC74380085C632 /* TabBarVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabBarVC.swift; sourceTree = "<group>"; };
522242692BFC7AFC0085C632 /* SideMenuVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SideMenuVC.swift; sourceTree = "<group>"; };
@@ -195,6 +187,9 @@
523ED27A2BDA2BC900CFED02 /* WOKAUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WOKAUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
523ED27E2BDA2BC900CFED02 /* WOKAUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WOKAUITests.swift; sourceTree = "<group>"; };
523ED2802BDA2BC900CFED02 /* WOKAUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WOKAUITestsLaunchTests.swift; sourceTree = "<group>"; };
524C422A2C04781B0016A11C /* ThemeTwoVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeTwoVM.swift; sourceTree = "<group>"; };
524C42302C0499560016A11C /* NotificationCenterReloads.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationCenterReloads.swift; sourceTree = "<group>"; };
524C42322C049D590016A11C /* CustomizableSegmentControl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomizableSegmentControl.swift; sourceTree = "<group>"; };
525327CF2BFCBC4A00F64283 /* ExploreWokaVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExploreWokaVC.swift; sourceTree = "<group>"; };
525327D52BFCC23600F64283 /* SideMenuVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SideMenuVM.swift; sourceTree = "<group>"; };
525327D82BFCDDF700F64283 /* AuthFuncStartupSoundHandling.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthFuncStartupSoundHandling.swift; sourceTree = "<group>"; };
@@ -235,6 +230,17 @@
52A3F6AA2BECBF550000BB0B /* LinkedChildVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LinkedChildVC.swift; sourceTree = "<group>"; };
52A3F6AC2BECC0340000BB0B /* TypeAlias.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypeAlias.swift; sourceTree = "<group>"; };
52A3F6AE2BECC0690000BB0B /* LinkedChildVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LinkedChildVM.swift; sourceTree = "<group>"; };
52B8D4CE2C04A25D00ED65F3 /* UIViewController+Container.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewController+Container.swift"; sourceTree = "<group>"; };
52B8D4CF2C04A25D00ED65F3 /* Preferences.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = "<group>"; };
52B8D4D02C04A25D00ED65F3 /* TransitionContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransitionContext.swift; sourceTree = "<group>"; };
52B8D4D12C04A25D00ED65F3 /* Delegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Delegate.swift; sourceTree = "<group>"; };
52B8D4D22C04A25D00ED65F3 /* SideMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SideMenu.h; sourceTree = "<group>"; };
52B8D4D32C04A25D00ED65F3 /* UIViewController+SideMenu.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewController+SideMenu.swift"; sourceTree = "<group>"; };
52B8D4D42C04A25D00ED65F3 /* SideMenuController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SideMenuController.swift; sourceTree = "<group>"; };
52B8D4D52C04A25D00ED65F3 /* StatusBar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatusBar.swift; sourceTree = "<group>"; };
52B8D4D62C04A25D00ED65F3 /* UIView+Container.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Container.swift"; sourceTree = "<group>"; };
52B8D4D72C04A25E00ED65F3 /* BasicTransitionAnimator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasicTransitionAnimator.swift; sourceTree = "<group>"; };
52B8D4D82C04A25E00ED65F3 /* Segue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Segue.swift; sourceTree = "<group>"; };
52C6E0192BE383C000E22D59 /* YourIntrestCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YourIntrestCell.swift; sourceTree = "<group>"; };
52C6E01A2BE383C000E22D59 /* YourIntrestCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = YourIntrestCell.xib; sourceTree = "<group>"; };
52C6E01D2BE3847F00E22D59 /* BorderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BorderView.swift; sourceTree = "<group>"; };
@@ -287,8 +293,8 @@
9C535DB72C0089B400DA6DCD /* ViewButtonAnimation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewButtonAnimation.swift; sourceTree = "<group>"; };
9C535DBF2C00B36000DA6DCD /* HomeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeVC.swift; sourceTree = "<group>"; };
9C535DC12C00B36900DA6DCD /* ThemeTwoVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeTwoVC.swift; sourceTree = "<group>"; };
9C535DC32C00BF2400DA6DCD /* HomeExploreCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = HomeExploreCell.swift; path = WOKA/Home/View/HomeExploreCell.swift; sourceTree = SOURCE_ROOT; };
9C535DC42C00BF2400DA6DCD /* HomeExploreCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = HomeExploreCell.xib; path = WOKA/Home/View/HomeExploreCell.xib; sourceTree = SOURCE_ROOT; };
9C535DC32C00BF2400DA6DCD /* HomeExploreCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = HomeExploreCell.swift; path = WOKA/Theme/View/HomeExploreCell.swift; sourceTree = SOURCE_ROOT; };
9C535DC42C00BF2400DA6DCD /* HomeExploreCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = HomeExploreCell.xib; path = WOKA/Theme/View/HomeExploreCell.xib; sourceTree = SOURCE_ROOT; };
9C535DC92C00C34A00DA6DCD /* Theme.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Theme.storyboard; sourceTree = "<group>"; };
9C56E82E2BDBC3EF00E4CA14 /* Exo2-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Exo2-Bold.ttf"; sourceTree = "<group>"; };
9C56E82F2BDBC3EF00E4CA14 /* Exo2-Medium.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Exo2-Medium.ttf"; sourceTree = "<group>"; };
@@ -374,17 +380,17 @@
522242582BFC73E40085C632 /* SideMenu */ = {
isa = PBXGroup;
children = (
5222424D2BFC73E40085C632 /* BasicTransitionAnimator.swift */,
5222424E2BFC73E40085C632 /* Delegate.swift */,
5222424F2BFC73E40085C632 /* Preferences.swift */,
522242502BFC73E40085C632 /* Segue.swift */,
522242512BFC73E40085C632 /* SideMenu.h */,
522242522BFC73E40085C632 /* SideMenuController.swift */,
522242532BFC73E40085C632 /* StatusBar.swift */,
522242542BFC73E40085C632 /* TransitionContext.swift */,
522242552BFC73E40085C632 /* UIView+Container.swift */,
522242562BFC73E40085C632 /* UIViewController+Container.swift */,
522242572BFC73E40085C632 /* UIViewController+SideMenu.swift */,
52B8D4D72C04A25E00ED65F3 /* BasicTransitionAnimator.swift */,
52B8D4D12C04A25D00ED65F3 /* Delegate.swift */,
52B8D4CF2C04A25D00ED65F3 /* Preferences.swift */,
52B8D4D82C04A25E00ED65F3 /* Segue.swift */,
52B8D4D22C04A25D00ED65F3 /* SideMenu.h */,
52B8D4D42C04A25D00ED65F3 /* SideMenuController.swift */,
52B8D4D52C04A25D00ED65F3 /* StatusBar.swift */,
52B8D4D02C04A25D00ED65F3 /* TransitionContext.swift */,
52B8D4D62C04A25D00ED65F3 /* UIView+Container.swift */,
52B8D4CE2C04A25D00ED65F3 /* UIViewController+Container.swift */,
52B8D4D32C04A25D00ED65F3 /* UIViewController+SideMenu.swift */,
);
path = SideMenu;
sourceTree = "<group>";
@@ -414,23 +420,23 @@
523ED25C2BDA2BC700CFED02 /* WOKA */ = {
isa = PBXGroup;
children = (
9C535DC82C00C34000DA6DCD /* Theme */,
525327D72BFCC30400F64283 /* TabBar & SideMenu */,
5259542C2BEA392A00191286 /* Alerts */,
525954152BE8CAC900191286 /* Network Adapter */,
9CBCB2A62BE5104F007D7934 /* Home */,
52C6E01F2BE3ADD800E22D59 /* Default Enum */,
9C56E83E2BDBE4FB00E4CA14 /* Authentication */,
523ED28E2BDA372C00CFED02 /* OnBoarding Module */,
9C27E1612BDB6F0F00EC1DA9 /* Main */,
9C27E15E2BDB6E4F00EC1DA9 /* Localized Module */,
52C8B0552BDA57CE003B51D0 /* Constants K */,
52C8B0512BDA4B51003B51D0 /* Helpers */,
523ED2932BDA3D0100CFED02 /* Assets */,
9C9BEEC62BEE1BBF004ECC2F /* CollectionViewCenteredFlowLayout.swift */,
523ED2682BDA2BC900CFED02 /* LaunchScreen.storyboard */,
523ED26B2BDA2BC900CFED02 /* Info.plist */,
9C9BEEC62BEE1BBF004ECC2F /* CollectionViewCenteredFlowLayout.swift */,
5259541E2BE8E93500191286 /* Config.xcconfig */,
5259542C2BEA392A00191286 /* Alerts */,
523ED2932BDA3D0100CFED02 /* Assets */,
9C56E83E2BDBE4FB00E4CA14 /* Authentication */,
52C8B0552BDA57CE003B51D0 /* Constants K */,
52C6E01F2BE3ADD800E22D59 /* Default Enum */,
52C8B0512BDA4B51003B51D0 /* Helpers */,
9CBCB2A62BE5104F007D7934 /* Home */,
523ED2682BDA2BC900CFED02 /* LaunchScreen.storyboard */,
9C27E15E2BDB6E4F00EC1DA9 /* Localized Module */,
9C27E1612BDB6F0F00EC1DA9 /* Main */,
525954152BE8CAC900191286 /* Network Adapter */,
523ED28E2BDA372C00CFED02 /* OnBoarding Module */,
525327D72BFCC30400F64283 /* TabBar & SideMenu */,
9C535DC82C00C34000DA6DCD /* Theme */,
);
path = WOKA;
sourceTree = "<group>";
@@ -526,10 +532,40 @@
path = Fonts;
sourceTree = "<group>";
};
524C422C2C048C5E0016A11C /* Controller */ = {
isa = PBXGroup;
children = (
522242652BFC74380085C632 /* TabBarVC.swift */,
522242692BFC7AFC0085C632 /* SideMenuVC.swift */,
);
path = Controller;
sourceTree = "<group>";
};
524C422D2C048C620016A11C /* ViewModel */ = {
isa = PBXGroup;
children = (
525327D52BFCC23600F64283 /* SideMenuVM.swift */,
);
path = ViewModel;
sourceTree = "<group>";
};
524C422E2C048C670016A11C /* Model */ = {
isa = PBXGroup;
children = (
);
name = Model;
sourceTree = "<group>";
};
524C422F2C048C710016A11C /* View */ = {
isa = PBXGroup;
children = (
);
path = View;
sourceTree = "<group>";
};
525327D12BFCC1BC00F64283 /* Model */ = {
isa = PBXGroup;
children = (
52FDBA772BFF23F4009D7AC7 /* TimePeriod.swift */,
);
path = Model;
sourceTree = "<group>";
@@ -537,7 +573,6 @@
525327D32BFCC1C900F64283 /* ViewModel */ = {
isa = PBXGroup;
children = (
525327D52BFCC23600F64283 /* SideMenuVM.swift */,
);
path = ViewModel;
sourceTree = "<group>";
@@ -555,9 +590,11 @@
525327D72BFCC30400F64283 /* TabBar & SideMenu */ = {
isa = PBXGroup;
children = (
524C422E2C048C670016A11C /* Model */,
524C422F2C048C710016A11C /* View */,
524C422D2C048C620016A11C /* ViewModel */,
524C422C2C048C5E0016A11C /* Controller */,
522242582BFC73E40085C632 /* SideMenu */,
522242652BFC74380085C632 /* TabBarVC.swift */,
522242692BFC7AFC0085C632 /* SideMenuVC.swift */,
);
path = "TabBar & SideMenu";
sourceTree = "<group>";
@@ -645,6 +682,7 @@
52663FF42BDFAB830001D8CE /* TextFieldErrorView.swift */,
52663FFA2BDFB1700001D8CE /* TextFieldShadow.swift */,
9CBCB2A02BE4E50A007D7934 /* TextFieldPassword.swift */,
524C42322C049D590016A11C /* CustomizableSegmentControl.swift */,
);
path = "UIElements Helper";
sourceTree = "<group>";
@@ -661,6 +699,7 @@
9C27E16C2BDB852F00EC1DA9 /* GVar.swift */,
9C27E16E2BDB866500EC1DA9 /* CellIdentifier.swift */,
525954182BE8CC3400191286 /* ConstantString.swift */,
524C42302C0499560016A11C /* NotificationCenterReloads.swift */,
);
path = "Constants K";
sourceTree = "<group>";
@@ -681,6 +720,23 @@
path = GIF_JSON;
sourceTree = "<group>";
};
52F12C802C04569100AF8139 /* Model */ = {
isa = PBXGroup;
children = (
52FDBA772BFF23F4009D7AC7 /* TimePeriod.swift */,
);
path = Model;
sourceTree = "<group>";
};
52F12C812C04569500AF8139 /* View */ = {
isa = PBXGroup;
children = (
9C535DC32C00BF2400DA6DCD /* HomeExploreCell.swift */,
9C535DC42C00BF2400DA6DCD /* HomeExploreCell.xib */,
);
path = View;
sourceTree = "<group>";
};
52FDBA792BFF26F9009D7AC7 /* AuthFunc */ = {
isa = PBXGroup;
children = (
@@ -721,8 +777,6 @@
9C535DC72C00BF3E00DA6DCD /* View */ = {
isa = PBXGroup;
children = (
9C535DC32C00BF2400DA6DCD /* HomeExploreCell.swift */,
9C535DC42C00BF2400DA6DCD /* HomeExploreCell.xib */,
);
path = View;
sourceTree = "<group>";
@@ -730,6 +784,8 @@
9C535DC82C00C34000DA6DCD /* Theme */ = {
isa = PBXGroup;
children = (
52F12C802C04569100AF8139 /* Model */,
52F12C812C04569500AF8139 /* View */,
9C535DCC2C00CD1200DA6DCD /* ViewModel */,
9C535DCB2C00CD0800DA6DCD /* Controller */,
9C535DC92C00C34A00DA6DCD /* Theme.storyboard */,
@@ -750,6 +806,7 @@
isa = PBXGroup;
children = (
52FDBA7C2BFF481A009D7AC7 /* ThemeOneVM.swift */,
524C422A2C04781B0016A11C /* ThemeTwoVM.swift */,
);
path = ViewModel;
sourceTree = "<group>";
@@ -1050,9 +1107,7 @@
files = (
9C535DC62C00BF2400DA6DCD /* HomeExploreCell.swift in Sources */,
52D774EF2BDFC50D001D87DE /* StringValidations.swift in Sources */,
5222425D2BFC73E40085C632 /* SideMenuController.swift in Sources */,
5272FCE32BDFDB05000ECB1D /* UserDetailsRegisterVC.swift in Sources */,
5222425E2BFC73E40085C632 /* StatusBar.swift in Sources */,
525954102BE8B72900191286 /* FontCustom.swift in Sources */,
5202AAFE2BDF90590043B7BD /* TextFieldImage.swift in Sources */,
52FDDAB52BF34DC300E037C1 /* YesNoAlertVC.swift in Sources */,
@@ -1062,9 +1117,13 @@
525953D42BE8B2DF00191286 /* UIApplication.swift in Sources */,
52CC38C32BDF812F00B74C3E /* LocalisedElements.swift in Sources */,
5259545E2BEBBA1A00191286 /* LoadingIndicatorImageView.swift in Sources */,
52B8D4DC2C04A25E00ED65F3 /* Delegate.swift in Sources */,
52CA28FC2BE11A0400708B49 /* UserIntrestVM.swift in Sources */,
52B8D4DB2C04A25E00ED65F3 /* TransitionContext.swift in Sources */,
9C27E1602BDB6ECA00EC1DA9 /* UserDefaultsStruct.swift in Sources */,
52A3F6AD2BECC0340000BB0B /* TypeAlias.swift in Sources */,
524C422B2C04781B0016A11C /* ThemeTwoVM.swift in Sources */,
52B8D4DF2C04A25E00ED65F3 /* StatusBar.swift in Sources */,
5259541D2BE8D94400191286 /* QueueHelper.swift in Sources */,
525954232BE8F00400191286 /* BaseResponseModel.swift in Sources */,
9C27E1692BDB76F200EC1DA9 /* OnBoardVM.swift in Sources */,
@@ -1076,9 +1135,9 @@
5259542B2BEA292800191286 /* UserRegPostModel.swift in Sources */,
52C8B0572BDA57DB003B51D0 /* Constant.swift in Sources */,
5202AB012BDFA7900043B7BD /* EmailValidation.swift in Sources */,
52B8D4E12C04A25E00ED65F3 /* BasicTransitionAnimator.swift in Sources */,
525954192BE8CC3400191286 /* ConstantString.swift in Sources */,
52D774EB2BDFC0BF001D87DE /* OTPVC.swift in Sources */,
5222425A2BFC73E40085C632 /* Delegate.swift in Sources */,
9C27E16F2BDB866500EC1DA9 /* CellIdentifier.swift in Sources */,
9C27E1632BDB6F1900EC1DA9 /* AuthFunc.swift in Sources */,
9C0A85412BEE35670093783D /* ResetPassUserNameVM.swift in Sources */,
@@ -1087,19 +1146,21 @@
52C8B05D2BDA5AA7003B51D0 /* ApplyGradrient.swift in Sources */,
52C6E01B2BE383C000E22D59 /* YourIntrestCell.swift in Sources */,
525954142BE8C87300191286 /* ExtensionVCToastAlert.swift in Sources */,
52B8D4D92C04A25E00ED65F3 /* UIViewController+Container.swift in Sources */,
523ED25E2BDA2BC700CFED02 /* AppDelegate.swift in Sources */,
52D774ED2BDFC13F001D87DE /* OTPVM.swift in Sources */,
525327D62BFCC23600F64283 /* SideMenuVM.swift in Sources */,
9CBCB2A32BE50C95007D7934 /* ResetPassUserNameVC.swift in Sources */,
52A3F6A52BECBA8D0000BB0B /* LinkedChildDM.swift in Sources */,
52B8D4DE2C04A25E00ED65F3 /* SideMenuController.swift in Sources */,
52A3F6AB2BECBF550000BB0B /* LinkedChildVC.swift in Sources */,
52FDBA7B2BFF2712009D7AC7 /* AuthFuncTimeHandling.swift in Sources */,
9CBCB2A52BE50D49007D7934 /* NewPasswordVC.swift in Sources */,
9CBCB29F2BE4E13A007D7934 /* ValidatorClass.swift in Sources */,
522242592BFC73E40085C632 /* BasicTransitionAnimator.swift in Sources */,
9CBCB29B2BE4D614007D7934 /* LoginVC.swift in Sources */,
9C56E83B2BDBC6E600E4CA14 /* SelectAgeVM.swift in Sources */,
9C535DC02C00B36000DA6DCD /* HomeVC.swift in Sources */,
52B8D4E22C04A25E00ED65F3 /* Segue.swift in Sources */,
5259542E2BEA393700191286 /* AlertCustomVC.swift in Sources */,
52CA28FA2BE119F500708B49 /* UserIntrestVC.swift in Sources */,
9C27E16B2BDB774D00EC1DA9 /* CarouselData.swift in Sources */,
@@ -1114,12 +1175,11 @@
52C8B0692BDA6E1E003B51D0 /* LocalizedEnum.swift in Sources */,
525954122BE8C84900191286 /* Toast.swift in Sources */,
525954172BE8CAD300191286 /* NetworkManager.swift in Sources */,
52B8D4DD2C04A25E00ED65F3 /* UIViewController+SideMenu.swift in Sources */,
525954292BEA079500191286 /* UserEmailVerifyDM.swift in Sources */,
52A3F6AF2BECC0690000BB0B /* LinkedChildVM.swift in Sources */,
525954252BE8F01600191286 /* ValueWrapper.swift in Sources */,
52A3F6A82BECBF2A0000BB0B /* LinkedChildCell.swift in Sources */,
522242622BFC73E40085C632 /* UIViewController+SideMenu.swift in Sources */,
5222425B2BFC73E40085C632 /* Preferences.swift in Sources */,
52C6E01E2BE3847F00E22D59 /* BorderView.swift in Sources */,
52FDBA7D2BFF481A009D7AC7 /* ThemeOneVM.swift in Sources */,
52C8B0742BDA7626003B51D0 /* OnBoardVC.swift in Sources */,
@@ -1127,14 +1187,14 @@
9CBCB2A12BE4E50A007D7934 /* TextFieldPassword.swift in Sources */,
9C56E8482BDBEFAB00E4CA14 /* AssetColor.swift in Sources */,
9C0A85432BEE3EC90093783D /* NewPasswordVM.swift in Sources */,
524C42332C049D590016A11C /* CustomizableSegmentControl.swift in Sources */,
9C535DB52C005A6D00DA6DCD /* KeyWindowFix.swift in Sources */,
9C9BEEC72BEE1BBF004ECC2F /* CollectionViewCenteredFlowLayout.swift in Sources */,
5222426A2BFC7AFC0085C632 /* SideMenuVC.swift in Sources */,
9CBCB29D2BE4D6BB007D7934 /* LoginVM.swift in Sources */,
524C42312C0499560016A11C /* NotificationCenterReloads.swift in Sources */,
5272FCE52BDFDC8C000ECB1D /* UserDetailsRegisterVM.swift in Sources */,
525954272BE9178F00191286 /* UserDataDM.swift in Sources */,
522242602BFC73E40085C632 /* UIView+Container.swift in Sources */,
522242612BFC73E40085C632 /* UIViewController+Container.swift in Sources */,
9C27E1652BDB6FBC00EC1DA9 /* StoryBoardID.swift in Sources */,
52FDBA782BFF23F4009D7AC7 /* TimePeriod.swift in Sources */,
525954322BEA39D200191286 /* AddTapGesture.swift in Sources */,
@@ -1143,15 +1203,15 @@
52C8B05F2BDA5AFA003B51D0 /* SplashVM.swift in Sources */,
52663FF72BDFACF60001D8CE /* ShadowView.swift in Sources */,
9C535DC22C00B36900DA6DCD /* ThemeTwoVC.swift in Sources */,
5222425F2BFC73E40085C632 /* TransitionContext.swift in Sources */,
52D774F12BDFC53B001D87DE /* StringSubScript.swift in Sources */,
52B8D4DA2C04A25E00ED65F3 /* Preferences.swift in Sources */,
52FB2D8F2BDF898F0009B0C7 /* TextFieldPadding.swift in Sources */,
5257B2652BDFB6F50086D79B /* CheckPhoneHomeBtnOrNotch.swift in Sources */,
52663FF92BDFAF110001D8CE /* EmailVM.swift in Sources */,
5222425C2BFC73E40085C632 /* Segue.swift in Sources */,
525954342BEA620800191286 /* IntrestTopicDM.swift in Sources */,
52663FF52BDFAB830001D8CE /* TextFieldErrorView.swift in Sources */,
9C27E16D2BDB852F00EC1DA9 /* GVar.swift in Sources */,
52B8D4E02C04A25E00ED65F3 /* UIView+Container.swift in Sources */,
9C56E8462BDBEE6400E4CA14 /* EmailVC.swift in Sources */,
525327D92BFCDDF700F64283 /* AuthFuncStartupSoundHandling.swift in Sources */,
52663FFB2BDFB1700001D8CE /* TextFieldShadow.swift in Sources */,

View File

@@ -0,0 +1,23 @@
{
"images" : [
{
"filename" : "icons8-down_button.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "icons8-down_button@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "icons8-down_button@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Frame 4.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -0,0 +1,23 @@
{
"images" : [
{
"filename" : "icons8-ok 1.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "icons8-ok 1@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "icons8-ok 1@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View File

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

View File

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

View File

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -23,7 +23,7 @@ extension K{
static let linkedChildCell = "LinkedChildCell"
}
struct Theme2{
struct Theme{
static let homeExploreCell = "HomeExploreCell"
}
}

View File

@@ -0,0 +1,15 @@
//
// NotificationCenterReloads.swift
// WOKA
//
// Created by MacBook Pro on 27/05/24.
//
import Foundation
extension K{
struct NotificationCenterReloads{
static var reloadTheme = "ReloadTheme"
}
}

View File

@@ -14,5 +14,6 @@ extension K{
static let authenticationSB = "AuthenticationSB"
static let home = "Home"
static let customAlerts = "CustomAlerts"
static let theme = "Theme"
}
}

View File

@@ -38,5 +38,9 @@ extension K{
static let yesNoAlertVC = "YesNoAlertVC"
}
struct Theme{
static let themeOneVC = "ThemeOneVC"
static let themeTwoVC = "ThemeTwoVC"
}
}
}

View File

@@ -17,5 +17,12 @@ extension K{
struct UserDefaultsStruct{
// App Update
static let appUpdateSkipVer = "appUpdateSkipVer"
static let themeDefault = "themeDefault"
}
}
// theme switch enum
enum ThemeSelect : String{
case theme1
case theme2
}

View File

@@ -13,14 +13,14 @@ class ViewButtonAnimation {
private init() {}
@objc func btnTapped(in viewController: UIViewController, view: UIView ) {
@objc func btnTapped(in viewController: UIViewController, view: UIView, completionHandler : @escaping () -> Void) {
// Apply click effect animation
UIView.animate(withDuration: 0.1, animations: {
view.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
}) { _ in
UIView.animate(withDuration: 0.1) {
view.transform = .identity
/*completionHandler*/()
completionHandler()
}
}
}

View File

@@ -1,42 +1,18 @@
//
// SideMenuVC.swift
// CustomizableSegmentControl.swift
// WOKA
//
// Created by MacBook Pro on 21/05/24.
// Created by MacBook Pro on 27/05/24.
//
import UIKit
class SideMenuVC: UIViewController {
@IBOutlet weak var logoutBtn: UIButton!
@IBOutlet weak var selectionMenuTrailingConstraint: NSLayoutConstraint!
@IBOutlet weak var languageControl: CustomizableSegmentControl!
@IBOutlet weak var theme1: UIImageView!
@IBOutlet weak var theme2: UIImageView!
var vm = SideMenuVM()
override func viewDidLoad() {
super.viewDidLoad()
vm.vc = self
vm.initView()
}
@IBAction func closeBtnTapped(_ sender: UIButton) {
self.sideMenuController?.hideMenu()
}
}
class CustomizableSegmentControl: UISegmentedControl {
private(set) lazy var radius:CGFloat = bounds.height / 2
private let segmentInset: CGFloat = 5 //your inset amount
private let segmentImage: UIImage? = UIImage(color: UIColor.white) //your color
private let segmentInset: CGFloat = 5
private let segmentImage: UIImage? = UIImage(color: UIColor.white)
override init(items: [Any]?) {
super.init(items: items)
@@ -88,31 +64,3 @@ extension UIImage{
self.init(cgImage: cgImage)
}
}
//extension UIView {
//
// /// Apply gradient colors to the view.
// ///
// /// - Parameters:
// /// - colors: An array of UIColor objects defining the color of each gradient stop.
// /// - startPoint: The start point of the gradient, defined in the unit coordinate space. The start point corresponds to the top-left corner of the layer's bounds rectangle.
// /// - endPoint: The end point of the gradient, defined in the unit coordinate space. The end point corresponds to the bottom-right corner of the layer's bounds rectangle.
// ///
// func applyGradient(colors: [UIColor], startPoint: CGPoint, endPoint: CGPoint) {
// // Create a new CAGradientLayer instance
// let gradientLayer = CAGradientLayer()
//
// // Set the frame of the gradient layer to match the bounds of the view
// gradientLayer.frame = bounds
//
// // Convert the array of UIColor objects to an array of CGColor objects
// gradientLayer.colors = colors.map { $0.cgColor }
//
// // Set the start and end points of the gradient
// gradientLayer.startPoint = startPoint
// gradientLayer.endPoint = endPoint
//
// // Insert the gradient layer as the bottom layer of the view's layer hierarchy
// layer.insertSublayer(gradientLayer, at: 0)
// }
//}

View File

@@ -18,25 +18,34 @@ class HomeVC: UIViewController ,ChildViewControllerDelegate{
override func viewDidLoad() {
super.viewDidLoad()
// Initialize the first child view controller
let sb = UIStoryboard(name: "Theme", bundle: nil)
if let firstVC = sb.instantiateViewController(withIdentifier: "ThemeOneVC") as? ThemeOneVC {
add(asChildViewController: firstVC)
firstVC.delegate = self
switch AuthFunc.shareInstance.selectedTheme {
case .theme1:
let sb = UIStoryboard(name: K.StoryBoard.theme, bundle: nil)
if let firstVC = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Theme.themeOneVC) as? ThemeOneVC {
add(asChildViewController: firstVC)
firstVC.delegate = self
}
case .theme2:
let sb = UIStoryboard(name: K.StoryBoard.theme, bundle: nil)
if let firstVC = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Theme.themeTwoVC) as? ThemeTwoVC {
add(asChildViewController: firstVC)
firstVC.delegate = self
}
}
}
func didPressSwitchButton(from viewController: UIViewController) {
if viewController is ThemeOneVC {
switchToViewController(withIdentifier: "ThemeTwoVC")
switchToViewController(withIdentifier: K.StoryBoardID.Theme.themeTwoVC)
} else if viewController is ThemeTwoVC {
switchToViewController(withIdentifier: "ThemeOneVC")
switchToViewController(withIdentifier: K.StoryBoardID.Theme.themeOneVC)
}
}
private func switchToViewController(withIdentifier identifier: String) {
let sb = UIStoryboard(name: "Theme", bundle: nil)
let sb = UIStoryboard(name: K.StoryBoard.theme, bundle: nil)
let newVC = sb.instantiateViewController(withIdentifier: identifier)
if let newVC = newVC as? ThemeOneVC {
newVC.delegate = self

View File

@@ -68,16 +68,16 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iqc-o5-ovk">
<rect key="frame" x="114" y="48" width="300" height="814"/>
<rect key="frame" x="79" y="48" width="335" height="814"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="30" translatesAutoresizingMaskIntoConstraints="NO" id="t37-ec-QfF">
<rect key="frame" x="0.0" y="20" width="300" height="976"/>
<rect key="frame" x="0.0" y="20" width="335" height="976"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Xny-eg-3V4">
<rect key="frame" x="25" y="0.0" width="260" height="30"/>
<rect key="frame" x="25" y="0.0" width="295" height="30"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oX8-tK-cUr">
<rect key="frame" x="230" y="0.0" width="30" height="30"/>
<rect key="frame" x="265" y="0.0" width="30" height="30"/>
<constraints>
<constraint firstAttribute="width" secondItem="oX8-tK-cUr" secondAttribute="height" multiplier="1:1" id="iC5-te-siA"/>
</constraints>
@@ -98,10 +98,10 @@
</constraints>
</view>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="RkV-jH-yAB">
<rect key="frame" x="25" y="60" width="260" height="186.5"/>
<rect key="frame" x="25" y="60" width="295" height="186.5"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Wst-a7-Npy">
<rect key="frame" x="34" y="0.0" width="192" height="90"/>
<rect key="frame" x="51.5" y="0.0" width="192" height="90"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="HcQ-Ty-2GV">
<rect key="frame" x="51" y="0.0" width="90" height="90"/>
@@ -129,13 +129,13 @@
</constraints>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Hi, Bilal Khan!" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="suo-d0-ZWN">
<rect key="frame" x="75" y="105" width="110" height="21.5"/>
<rect key="frame" x="92.5" y="105" width="110" height="21.5"/>
<fontDescription key="fontDescription" type="system" pointSize="18"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" adjustsImageSizeForAccessibilityContentSizeCategory="YES" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="mCq-h5-pMf">
<rect key="frame" x="20" y="141.5" width="220" height="45"/>
<rect key="frame" x="37.5" y="141.5" width="220" height="45"/>
<color key="backgroundColor" red="0.34901960780000002" green="0.81568627449999997" blue="0.99607843139999996" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="45" id="16m-fq-Z3J"/>
@@ -151,53 +151,116 @@
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="FFp-2S-Idg" userLabel="THEME">
<rect key="frame" x="25" y="276.5" width="260" height="189.5"/>
<rect key="frame" x="25" y="276.5" width="295" height="189.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="THEME" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="97O-hX-edI">
<rect key="frame" x="103.5" y="0.0" width="53.5" height="19.5"/>
<rect key="frame" x="121" y="0.0" width="53.5" height="19.5"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="NLo-Lc-0nk">
<rect key="frame" x="0.0" y="29.5" width="260" height="160"/>
<rect key="frame" x="11.5" y="29.5" width="272" height="160"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Theme1" translatesAutoresizingMaskIntoConstraints="NO" id="5Wh-aJ-q5B">
<rect key="frame" x="20" y="0.0" width="100" height="160"/>
<view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eUd-z5-WmN">
<rect key="frame" x="20" y="0.0" width="106" height="160"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Theme1" translatesAutoresizingMaskIntoConstraints="NO" id="5Wh-aJ-q5B">
<rect key="frame" x="0.0" y="0.0" width="106" height="160"/>
</imageView>
<view hidden="YES" alpha="0.59999999999999998" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RDY-eo-rkC">
<rect key="frame" x="0.0" y="0.0" width="106" height="160"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</view>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="CheckMark" translatesAutoresizingMaskIntoConstraints="NO" id="YDJ-OW-yab">
<rect key="frame" x="38" y="65" width="30" height="30"/>
<constraints>
<constraint firstAttribute="width" secondItem="YDJ-OW-yab" secondAttribute="height" multiplier="1:1" id="SGL-t7-dEJ"/>
<constraint firstAttribute="height" constant="30" id="oMU-Ek-7X1"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="5Wh-aJ-q5B" firstAttribute="top" secondItem="eUd-z5-WmN" secondAttribute="top" id="C8w-ZW-us1"/>
<constraint firstAttribute="trailing" secondItem="RDY-eo-rkC" secondAttribute="trailing" id="CFX-oV-94f"/>
<constraint firstItem="5Wh-aJ-q5B" firstAttribute="leading" secondItem="eUd-z5-WmN" secondAttribute="leading" id="Gsl-5A-sYo"/>
<constraint firstAttribute="bottom" secondItem="RDY-eo-rkC" secondAttribute="bottom" id="Ltd-Fg-D6j"/>
<constraint firstItem="YDJ-OW-yab" firstAttribute="centerY" secondItem="eUd-z5-WmN" secondAttribute="centerY" id="RT0-9U-7kk"/>
<constraint firstAttribute="bottom" secondItem="5Wh-aJ-q5B" secondAttribute="bottom" id="RmF-Tf-LK8"/>
<constraint firstItem="RDY-eo-rkC" firstAttribute="leading" secondItem="eUd-z5-WmN" secondAttribute="leading" id="TRd-j8-oPD"/>
<constraint firstItem="YDJ-OW-yab" firstAttribute="centerX" secondItem="eUd-z5-WmN" secondAttribute="centerX" id="nwx-Dr-l5f"/>
<constraint firstAttribute="trailing" secondItem="5Wh-aJ-q5B" secondAttribute="trailing" id="tpp-2q-Itc"/>
<constraint firstItem="RDY-eo-rkC" firstAttribute="top" secondItem="eUd-z5-WmN" secondAttribute="top" id="wrc-Md-fuI"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<integer key="value" value="10"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Theme2" translatesAutoresizingMaskIntoConstraints="NO" id="nAY-LD-xxC">
<rect key="frame" x="140" y="0.0" width="100" height="160"/>
</view>
<view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="HCH-H0-TUd">
<rect key="frame" x="146" y="0.0" width="106" height="160"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Theme2" translatesAutoresizingMaskIntoConstraints="NO" id="nAY-LD-xxC">
<rect key="frame" x="0.0" y="0.0" width="106" height="160"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<integer key="value" value="10"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<view hidden="YES" alpha="0.59999999999999998" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="myZ-Rs-VkQ">
<rect key="frame" x="0.0" y="0.0" width="106" height="160"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</view>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="CheckMark" translatesAutoresizingMaskIntoConstraints="NO" id="fAz-cu-AAI">
<rect key="frame" x="38" y="65" width="30" height="30"/>
<constraints>
<constraint firstAttribute="height" constant="30" id="H1e-nB-0w3"/>
<constraint firstAttribute="width" secondItem="fAz-cu-AAI" secondAttribute="height" multiplier="1:1" id="icQ-6h-Jfx"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="nAY-LD-xxC" secondAttribute="trailing" id="0NW-SP-qrK"/>
<constraint firstAttribute="bottom" secondItem="myZ-Rs-VkQ" secondAttribute="bottom" id="53F-Qt-aYq"/>
<constraint firstItem="fAz-cu-AAI" firstAttribute="centerX" secondItem="HCH-H0-TUd" secondAttribute="centerX" id="KPv-1O-FCj"/>
<constraint firstItem="fAz-cu-AAI" firstAttribute="centerY" secondItem="HCH-H0-TUd" secondAttribute="centerY" id="LDW-sM-802"/>
<constraint firstItem="nAY-LD-xxC" firstAttribute="leading" secondItem="HCH-H0-TUd" secondAttribute="leading" id="OeM-vT-mON"/>
<constraint firstAttribute="bottom" secondItem="nAY-LD-xxC" secondAttribute="bottom" id="YdS-Xt-OZx"/>
<constraint firstItem="myZ-Rs-VkQ" firstAttribute="top" secondItem="HCH-H0-TUd" secondAttribute="top" id="ftw-kR-vez"/>
<constraint firstItem="myZ-Rs-VkQ" firstAttribute="leading" secondItem="HCH-H0-TUd" secondAttribute="leading" id="rdY-Io-OYs"/>
<constraint firstItem="nAY-LD-xxC" firstAttribute="top" secondItem="HCH-H0-TUd" secondAttribute="top" id="tEa-0V-TCS"/>
<constraint firstAttribute="trailing" secondItem="myZ-Rs-VkQ" secondAttribute="trailing" id="ww3-V4-Rcm"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<integer key="value" value="10"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
</view>
</subviews>
<edgeInsets key="layoutMargins" top="0.0" left="20" bottom="0.0" right="20"/>
</stackView>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="17" translatesAutoresizingMaskIntoConstraints="NO" id="VRZ-To-5iq">
<rect key="frame" x="25" y="496" width="260" height="80"/>
<rect key="frame" x="25" y="496" width="295" height="80"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2Ss-sF-9JC">
<rect key="frame" x="0.0" y="0.0" width="260" height="0.5"/>
<rect key="frame" x="0.0" y="0.0" width="295" height="0.5"/>
<color key="backgroundColor" red="0.34901960780000002" green="0.81568627449999997" blue="0.99607843139999996" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="0.5" id="vD2-0c-MGR"/>
</constraints>
</view>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="czq-AM-ets">
<rect key="frame" x="0.0" y="17.5" width="260" height="45"/>
<rect key="frame" x="0.0" y="17.5" width="295" height="45"/>
<subviews>
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="dR3-t9-4tw" customClass="CustomizableSegmentControl" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="230" height="46"/>
<rect key="frame" x="0.0" y="0.0" width="265" height="46"/>
<constraints>
<constraint firstAttribute="height" constant="45" id="S0T-Zr-FUt"/>
</constraints>
@@ -208,7 +271,7 @@
<color key="selectedSegmentTintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</segmentedControl>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="uY8-gn-7UA">
<rect key="frame" x="230" y="0.0" width="30" height="45"/>
<rect key="frame" x="265" y="0.0" width="30" height="45"/>
<constraints>
<constraint firstAttribute="width" constant="30" id="LE3-he-Y3K"/>
</constraints>
@@ -216,7 +279,7 @@
</subviews>
</stackView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5fV-UP-f4i">
<rect key="frame" x="0.0" y="79.5" width="260" height="0.5"/>
<rect key="frame" x="0.0" y="79.5" width="295" height="0.5"/>
<color key="backgroundColor" red="0.34901960780000002" green="0.81568627449999997" blue="0.99607843139999996" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="0.5" id="EFi-kk-SIB"/>
@@ -225,7 +288,7 @@
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="top" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="NlR-Il-Kw6">
<rect key="frame" x="25" y="606" width="260" height="192"/>
<rect key="frame" x="25" y="606" width="295" height="192"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="27K-dP-rLv">
<rect key="frame" x="0.0" y="0.0" width="105" height="32"/>
@@ -265,17 +328,17 @@
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="eEN-Gz-Lba">
<rect key="frame" x="25" y="828" width="260" height="148"/>
<rect key="frame" x="25" y="828" width="295" height="148"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kdd-R6-VSK">
<rect key="frame" x="0.0" y="0.0" width="260" height="0.5"/>
<rect key="frame" x="0.0" y="0.0" width="295" height="0.5"/>
<color key="backgroundColor" red="0.34901960780000002" green="0.81568627449999997" blue="0.99607843139999996" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="0.5" id="zNf-t1-EI9"/>
</constraints>
</view>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="top" translatesAutoresizingMaskIntoConstraints="NO" id="0mL-Ab-I52">
<rect key="frame" x="0.0" y="15.5" width="260" height="20"/>
<rect key="frame" x="0.0" y="15.5" width="295" height="20"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" distribution="equalSpacing" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="sgm-gC-aUu">
<rect key="frame" x="0.0" y="0.0" width="255" height="20"/>
@@ -309,14 +372,14 @@
</subviews>
</stackView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7Xs-es-ydw">
<rect key="frame" x="0.0" y="50.5" width="260" height="0.5"/>
<rect key="frame" x="0.0" y="50.5" width="295" height="0.5"/>
<color key="backgroundColor" red="0.34901960780000002" green="0.81568627449999997" blue="0.99607843139999996" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="0.5" id="yVw-Ap-vAS"/>
</constraints>
</view>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="top" translatesAutoresizingMaskIntoConstraints="NO" id="ALy-fb-Zww">
<rect key="frame" x="0.0" y="66" width="260" height="20"/>
<rect key="frame" x="0.0" y="66" width="295" height="20"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="249" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DDe-vK-Hd2">
<rect key="frame" x="0.0" y="0.0" width="71" height="20"/>
@@ -331,14 +394,14 @@
</subviews>
</stackView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KGD-q6-IV3">
<rect key="frame" x="0.0" y="101" width="260" height="0.5"/>
<rect key="frame" x="0.0" y="101" width="295" height="0.5"/>
<color key="backgroundColor" red="0.34901960780000002" green="0.81568627449999997" blue="0.99607843139999996" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="0.5" id="qFj-5C-IvH"/>
</constraints>
</view>
<stackView opaque="NO" contentMode="scaleToFill" distribution="equalSpacing" translatesAutoresizingMaskIntoConstraints="NO" id="8Nc-DS-Cyi">
<rect key="frame" x="0.0" y="116.5" width="260" height="16"/>
<rect key="frame" x="0.0" y="116.5" width="295" height="16"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="WOKA Creations PVT LTD" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fMz-tw-JjQ">
<rect key="frame" x="0.0" y="0.0" width="147" height="16"/>
@@ -347,7 +410,7 @@
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="VER 25.5" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bOt-Ov-fli">
<rect key="frame" x="213" y="0.0" width="47" height="16"/>
<rect key="frame" x="248" y="0.0" width="47" height="16"/>
<fontDescription key="fontDescription" name="Exo2-Medium" family="Exo 2" pointSize="12"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
@@ -355,7 +418,7 @@
</subviews>
</stackView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BZg-mG-X2p">
<rect key="frame" x="0.0" y="147.5" width="260" height="0.5"/>
<rect key="frame" x="0.0" y="147.5" width="295" height="0.5"/>
<color key="backgroundColor" red="0.34901960780000002" green="0.81568627449999997" blue="0.99607843139999996" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="0.5" id="jFf-2J-C4a"/>
@@ -382,7 +445,7 @@
<viewLayoutGuide key="safeArea" id="slh-HS-0OR"/>
<color key="backgroundColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="iqc-o5-ovk" firstAttribute="width" secondItem="qHL-AI-7IP" secondAttribute="width" multiplier="0.724638" id="18H-xY-ShM"/>
<constraint firstItem="iqc-o5-ovk" firstAttribute="width" secondItem="qHL-AI-7IP" secondAttribute="width" multiplier="0.809179" id="O0o-gL-bug"/>
<constraint firstItem="NLo-Lc-0nk" firstAttribute="height" secondItem="qHL-AI-7IP" secondAttribute="height" multiplier="0.178571" id="ROH-9O-qFA"/>
<constraint firstItem="iqc-o5-ovk" firstAttribute="top" secondItem="slh-HS-0OR" secondAttribute="top" id="SHa-dQ-wGm"/>
<constraint firstItem="iqc-o5-ovk" firstAttribute="trailing" secondItem="slh-HS-0OR" secondAttribute="trailing" id="V31-3u-cFE"/>
@@ -396,8 +459,12 @@
<outlet property="languageControl" destination="dR3-t9-4tw" id="3Jd-0j-YA7"/>
<outlet property="logoutBtn" destination="mCq-h5-pMf" id="bkx-Ld-3gQ"/>
<outlet property="selectionMenuTrailingConstraint" destination="V31-3u-cFE" id="gJh-Kh-fu0"/>
<outlet property="theme1" destination="5Wh-aJ-q5B" id="8pf-Kq-IZn"/>
<outlet property="theme2" destination="nAY-LD-xxC" id="gfY-LN-cbJ"/>
<outlet property="theme1" destination="eUd-z5-WmN" id="2jG-Ie-lWp"/>
<outlet property="theme2" destination="HCH-H0-TUd" id="YU1-tv-J8j"/>
<outlet property="themeOneCheckMark" destination="YDJ-OW-yab" id="gjk-WA-1yK"/>
<outlet property="themeOneView" destination="RDY-eo-rkC" id="Sd6-48-7EG"/>
<outlet property="themeTwoView" destination="myZ-Rs-VkQ" id="vlW-X8-kOY"/>
<outlet property="themetwoCheckMark" destination="fAz-cu-AAI" id="LKC-y3-weu"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="WmS-PJ-wRh" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
@@ -423,7 +490,6 @@
<rect key="frame" x="177" y="802" width="60" height="60"/>
<constraints>
<constraint firstAttribute="width" secondItem="P1N-m9-rvT" secondAttribute="height" multiplier="1:1" id="P6m-5H-Mc0"/>
<constraint firstAttribute="height" constant="60" id="nv6-1G-C4K"/>
</constraints>
<color key="tintColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
@@ -444,6 +510,7 @@
<constraint firstItem="bkq-AU-CNT" firstAttribute="leading" secondItem="D79-Dn-2Pj" secondAttribute="leading" id="OuW-WU-gkg"/>
<constraint firstItem="lxy-WU-CSd" firstAttribute="leading" secondItem="D79-Dn-2Pj" secondAttribute="leading" id="cxe-Gq-rhA"/>
<constraint firstItem="P1N-m9-rvT" firstAttribute="centerX" secondItem="D79-Dn-2Pj" secondAttribute="centerX" id="kWw-aG-YDa"/>
<constraint firstItem="P1N-m9-rvT" firstAttribute="height" secondItem="HLg-jy-523" secondAttribute="height" multiplier="0.0669643" id="sh2-E1-RKO"/>
<constraint firstItem="bkq-AU-CNT" firstAttribute="top" secondItem="HLg-jy-523" secondAttribute="top" id="v3g-LP-cO8"/>
<constraint firstItem="lxy-WU-CSd" firstAttribute="trailing" secondItem="D79-Dn-2Pj" secondAttribute="trailing" id="yjV-xh-53r"/>
<constraint firstItem="bkq-AU-CNT" firstAttribute="trailing" secondItem="D79-Dn-2Pj" secondAttribute="trailing" id="z17-Q6-WjV"/>
@@ -569,6 +636,7 @@
</scene>
</scenes>
<resources>
<image name="CheckMark" width="48" height="48"/>
<image name="CloseIcon" width="61.333332061767578" height="61.333332061767578"/>
<image name="ExploreWoka" width="36.5" height="25"/>
<image name="HeartIcon" width="26.5" height="26.5"/>

View File

@@ -1,51 +0,0 @@
//
// SideMenuVM.swift
// WOKA
//
// Created by MacBook Pro on 21/05/24.
//
import UIKit
class SideMenuVM{
weak var vc : SideMenuVC!
func initView(){
customizeSegmentControl()
let color1 = #colorLiteral(red: 0.144693464, green: 0.1426281333, blue: 0.6686832905, alpha: 1)
let color2 = #colorLiteral(red: 0.6901960784, green: 0.2745098039, blue: 0.7568627451, alpha: 1)
vc.logoutBtn.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
vc.logoutBtn.layer.cornerRadius = vc.logoutBtn.frame.height / 2
// Adding the trailing constriant to make the view appeared center when expanded
let sidemenuBasicConfiguration = SideMenuController.preferences.basic
let showPlaceTableOnLeft = (sidemenuBasicConfiguration.position == .under) != (sidemenuBasicConfiguration.direction == .right)
if showPlaceTableOnLeft {
vc.selectionMenuTrailingConstraint.constant = SideMenuController.preferences.basic.menuWidth - vc.view.frame.width
}
// Add border to theme
vc.theme1.addBorderView(width: 1.5, color: UIColor.white)
vc.theme2.addBorderView(width: 1.5, color: UIColor.white)
vc.theme1.addTapGesture {
print("ss")
}
vc.theme1.addTapGesture {
print("ss")
}
}
private func customizeSegmentControl(){
// Customize Segment Control
vc.languageControl.layer.cornerRadius = vc.languageControl.layer.frame.height / 2
vc.languageControl.layer.masksToBounds = true
vc.languageControl.clipsToBounds = true
}
}

View File

@@ -76,7 +76,8 @@ extension AppDelegate {
// MARK: - Configure Sidebar
final private func configureSideBar(){
SideMenuController.preferences.basic.menuWidth = UIScreen.main.bounds.width - 114
SideMenuController.preferences.basic.menuWidth = UIScreen.main.bounds.width - 79
SideMenuController.preferences.animation.shadowAlpha = 0.5
SideMenuController.preferences.basic.direction = .right
SideMenuController.preferences.basic.enableRubberEffectWhenPanning = true
SideMenuController.preferences.basic.position = .above

View File

@@ -24,6 +24,8 @@ class AuthFunc{
var authID = String()
var authPass = String()
var selectedTheme = ThemeSelect.theme1
//This is temporary variable. Make it emtpy when the registration is finished.
var regData = UserRegPostModel()
@@ -55,6 +57,14 @@ class AuthFunc{
authPass = pass
}
}
/*
This func will remove the selected userdefaults while logout
*/
func logout(){
//Reset Theme to defaults
UserDefaults.standard.setValue(nil, forKey: K.UserDefaultsStruct.themeDefault)
}
}
// MARK: - Language Enum

View File

@@ -17,7 +17,8 @@ extension AuthFunc{
color1: #colorLiteral(red: 0.6509803922, green: 0.8862745098, blue: 0.8196078431, alpha: 1),
color2: #colorLiteral(red: 0.9529411765, green: 0.9843137255, blue: 0.7137254902, alpha: 1),
grass: "HomeGrassDay",
textColor : UIColor.appColor(.TextDarkBlue)!
textColor : UIColor.appColor(.TextDarkBlue)!,
dayCycle: .morning
)
let afternoon = TimePeriod.afternoon(
@@ -26,7 +27,8 @@ extension AuthFunc{
color1: #colorLiteral(red: 0.1333333333, green: 0.7294117647, blue: 0.9960784314, alpha: 1),
color2: #colorLiteral(red: 0.5921568627, green: 0.9098039216, blue: 0.9960784314, alpha: 1),
grass: "HomeGrassDay",
textColor : UIColor.appColor(.TextDarkBlue)!
textColor : UIColor.appColor(.TextDarkBlue)!,
dayCycle: .afternoon
)
let evening = TimePeriod.evening(
@@ -35,7 +37,8 @@ extension AuthFunc{
color1: #colorLiteral(red: 0.8196078431, green: 0.3333333333, blue: 0.4705882353, alpha: 1),
color2: #colorLiteral(red: 1, green: 0.7764705882, blue: 0.4, alpha: 1),
grass: "HomeGrassDay",
textColor : UIColor.appColor(.TextDarkBlue)!
textColor : UIColor.white,
dayCycle: .evening
)
let night = TimePeriod.night(
@@ -44,7 +47,8 @@ extension AuthFunc{
color1: #colorLiteral(red: 0.2705882353, green: 0.2156862745, blue: 0.5176470588, alpha: 1),
color2: #colorLiteral(red: 0.3764705882, green: 0.3803921569, blue: 0.7843137255, alpha: 1),
grass: "HomeGrassNight",
textColor : UIColor.white
textColor : UIColor.white,
dayCycle: .night
)
self.timePeriods = [morning,afternoon,evening,night]

View File

@@ -34,5 +34,15 @@ class SplashVM{
vc.englishBtn.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 0.8))
vc.hindiBtn.roundCorner()
vc.englishBtn.roundCorner()
selectTheme()
}
func selectTheme(){
let theme = UserDefaults.standard.string(forKey: K.UserDefaultsStruct.themeDefault)
if theme != nil{
(theme == ThemeSelect.theme1.rawValue) ? (AuthFunc.shareInstance.selectedTheme = .theme1) : (AuthFunc.shareInstance.selectedTheme = .theme2)
}else{
AuthFunc.shareInstance.selectedTheme = .theme1
}
}
}

View File

@@ -0,0 +1,41 @@
//
// SideMenuVC.swift
// WOKA
//
// Created by MacBook Pro on 21/05/24.
//
import UIKit
class SideMenuVC: UIViewController {
@IBOutlet weak var logoutBtn: UIButton!
@IBOutlet weak var selectionMenuTrailingConstraint: NSLayoutConstraint!
@IBOutlet weak var languageControl: CustomizableSegmentControl!
@IBOutlet weak var theme1: UIView!
@IBOutlet weak var theme2: UIView!
//Theme Select Outlets
@IBOutlet weak var themeOneView: UIView!
@IBOutlet weak var themeOneCheckMark: UIImageView!
@IBOutlet weak var themeTwoView: UIView!
@IBOutlet weak var themetwoCheckMark: UIImageView!
var vm = SideMenuVM()
override func viewDidLoad() {
super.viewDidLoad()
vm.vc = self
vm.initView()
}
override func viewDidLayoutSubviews() {
vm.themeSelect()
}
@IBAction func closeBtnTapped(_ sender: UIButton) {
self.sideMenuController?.hideMenu()
}
}

View File

@@ -18,22 +18,19 @@ class TabBarVC: UITabBarController {
self.delegate = self
customizeTabBarItemFont()
// UITabBar.appearance().tintColor = #colorLiteral(red: 0.0349480696, green: 0.0643344149, blue: 0.4407724142, alpha: 1)
//// UITabBar.appearance().unselectedItemTintColor = #colorLiteral(red: 0.0349480696, green: 0.0643344149, blue: 0.4407724142, alpha: 1)
// UITabBar.appearance().unselectedItemTintColor = #colorLiteral(red: 0.501960814, green: 0.501960814, blue: 0.501960814, alpha: 1)
self.setupTabBarUI()
self.addCustomTabBarView()
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if hasTopNotch{
tabBar.frame.size.height = 95
tabBar.frame.origin.y = view.frame.height - 95
tabBar.frame.size.height = 90
tabBar.frame.origin.y = view.frame.height - 90
}else{
tabBar.frame.size.height = 80
tabBar.frame.origin.y = view.frame.height - 80
tabBar.frame.size.height = 60
tabBar.frame.origin.y = view.frame.height - 60
}
}

View File

@@ -200,10 +200,6 @@ open class SideMenuController: UIViewController {
configureGesturesRecognizer()
setUpNotifications()
// sideMenuController?.cache(viewController: SideMenuVC(), with: "second")
// sideMenuController?.cache(viewController: TabBarVC(), with: "second")
}
private func resolveDirection(with view: UIView) {

View File

@@ -0,0 +1,86 @@
//
// SideMenuVM.swift
// WOKA
//
// Created by MacBook Pro on 21/05/24.
//
import UIKit
class SideMenuVM{
weak var vc : SideMenuVC!
func initView(){
customizeSegmentControl()
let color1 = #colorLiteral(red: 0.144693464, green: 0.1426281333, blue: 0.6686832905, alpha: 1)
let color2 = #colorLiteral(red: 0.6901960784, green: 0.2745098039, blue: 0.7568627451, alpha: 1)
vc.logoutBtn.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
vc.logoutBtn.layer.cornerRadius = vc.logoutBtn.frame.height / 2
// Adding the trailing constriant to make the view appeared center when expanded
let sidemenuBasicConfiguration = SideMenuController.preferences.basic
let showPlaceTableOnLeft = (sidemenuBasicConfiguration.position == .under) != (sidemenuBasicConfiguration.direction == .right)
if showPlaceTableOnLeft {
vc.selectionMenuTrailingConstraint.constant = SideMenuController.preferences.basic.menuWidth - vc.view.frame.width
}
// Add border to theme
vc.theme1.addBorderView(width: 1.5, color: UIColor.white)
vc.theme2.addBorderView(width: 1.5, color: UIColor.white)
vc.theme1.addTapGesture { [weak self] in
UserDefaults.standard.setValue(ThemeSelect.theme1.rawValue, forKey: K.UserDefaultsStruct.themeDefault)
AuthFunc.shareInstance.selectedTheme = .theme1
guard let self else {return}
ViewButtonAnimation.sharedInstance.btnTapped(in: self.vc, view: vc.theme1) {
NotificationCenter.default.post(name: NSNotification.Name(K.NotificationCenterReloads.reloadTheme), object: nil, userInfo: nil)
self.themeSelect()
}
}
vc.theme2.addTapGesture { [weak self] in
UserDefaults.standard.setValue(ThemeSelect.theme2.rawValue, forKey: K.UserDefaultsStruct.themeDefault)
AuthFunc.shareInstance.selectedTheme = .theme2
guard let self else {return}
ViewButtonAnimation.sharedInstance.btnTapped(in: self.vc, view: vc.theme2) {
NotificationCenter.default.post(name: NSNotification.Name(K.NotificationCenterReloads.reloadTheme), object: nil, userInfo: nil)
self.themeSelect()
}
}
}
func themeSelect(){
switch AuthFunc.shareInstance.selectedTheme {
case .theme1:
//Show theme 1 selected
vc.themeOneView.isHidden = false
vc.themeOneCheckMark.isHidden = false
// remove theme 2 selection
vc.themeTwoView.isHidden = true
vc.themetwoCheckMark.isHidden = true
case .theme2:
//Show theme 2 selected
vc.themeTwoView.isHidden = false
vc.themetwoCheckMark.isHidden = false
// remove theme 1 selection
vc.themeOneView.isHidden = true
vc.themeOneCheckMark.isHidden = true
}
self.vc.sideMenuController?.hideMenu()
}
private func customizeSegmentControl(){
// Customize Segment Control
vc.languageControl.layer.cornerRadius = vc.languageControl.layer.frame.height / 2
vc.languageControl.layer.masksToBounds = true
vc.languageControl.clipsToBounds = true
}
}

View File

@@ -20,6 +20,7 @@ class ThemeOneVC: UIViewController {
@IBOutlet weak var webSeriesView: UIStackView!
@IBOutlet var star: [UIImageView]!
@IBOutlet weak var moonImage: UIImageView!
var timer: Timer?
@@ -29,8 +30,14 @@ class ThemeOneVC: UIViewController {
deinit{
timer?.invalidate()
// Removing observers
NotificationCenter.default.removeObserver(self, name: UIApplication.didEnterBackgroundNotification, object: nil)
NotificationCenter.default.removeObserver(self, name: UIApplication.willEnterForegroundNotification, object: nil)
NotificationCenter.default.removeObserver(self, name: NSNotification.Name(rawValue: K.NotificationCenterReloads.reloadTheme), object: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
vm.vc = self

View File

@@ -13,8 +13,16 @@ class ThemeTwoVC: UIViewController {
@IBOutlet weak var collectionView: UICollectionView!
@IBOutlet weak var liveTvView: UIView!
var vm = ThemeTwoVM()
deinit{
NotificationCenter.default.removeObserver(self, name: NSNotification.Name(rawValue: K.NotificationCenterReloads.reloadTheme), object: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
vm.vc = self
vm.initView()
liveTvView.addTapGesture { [weak self] in
guard let self else{return}
delegate?.didPressSwitchButton(from: self)
@@ -27,10 +35,48 @@ class ThemeTwoVC: UIViewController {
}
//extension ThemeTwoVC : CollectionViewSRC{
// func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// <#code#>
// MARK: - CollectionView DataSource Delegate
extension ThemeTwoVC : CollectionViewSRC{
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
vm.cellData.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: K.CellIdentifier.Theme.homeExploreCell, for: indexPath) as! HomeExploreCell
cell.setData(image: vm.cellData[indexPath.row])
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print(indexPath.row)
}
}
// MARK: - Collection Flow Layout
extension ThemeTwoVC : UICollectionViewDelegateFlowLayout{
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 5
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 5
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let itemsPerRow: CGFloat = 3
let paddingSpace = 5 * (itemsPerRow + 1)
let availableWidth = collectionView.frame.width - paddingSpace
let widthPerItem = availableWidth / itemsPerRow
return CGSize(width: widthPerItem, height: widthPerItem + (widthPerItem / 6))
}
// func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
// return UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5)
// }
//
//
//}
}

View File

@@ -8,24 +8,24 @@
import UIKit
// Enumeration representing different periods of the day, each with a start time, end time, and two colors.
enum TimePeriod : Equatable{
enum TimePeriod: Equatable {
// Enumeration cases for different periods of the day with associated values.
case morning(startTime: String, endTime: String, color1: UIColor, color2: UIColor, grass: String, textColor: UIColor)
case afternoon(startTime: String, endTime: String, color1: UIColor, color2: UIColor, grass: String, textColor: UIColor)
case evening(startTime: String, endTime: String, color1: UIColor, color2: UIColor, grass: String, textColor: UIColor)
case night(startTime: String, endTime: String, color1: UIColor, color2: UIColor, grass: String, textColor: UIColor)
case morning(startTime: String, endTime: String, color1: UIColor, color2: UIColor, grass: String, textColor: UIColor, dayCycle: DayCycle)
case afternoon(startTime: String, endTime: String, color1: UIColor, color2: UIColor, grass: String, textColor: UIColor, dayCycle: DayCycle)
case evening(startTime: String, endTime: String, color1: UIColor, color2: UIColor, grass: String, textColor: UIColor, dayCycle: DayCycle)
case night(startTime: String, endTime: String, color1: UIColor, color2: UIColor, grass: String, textColor: UIColor, dayCycle: DayCycle)
// Computed property to get the details of each time period as a tuple.
var details: (startTime: String, endTime: String, color1: UIColor, color2: UIColor, grass: String, textColor: UIColor) {
var details: (startTime: String, endTime: String, color1: UIColor, color2: UIColor, grass: String, textColor: UIColor, dayCycle: DayCycle) {
switch self {
case .morning(let startTime, let endTime, let color1, let color2, let grass, let textColor):
return (startTime, endTime, color1, color2, grass, textColor)
case .afternoon(let startTime, let endTime, let color1, let color2, let grass, let textColor):
return (startTime, endTime, color1, color2, grass, textColor)
case .evening(let startTime, let endTime, let color1, let color2, let grass, let textColor):
return (startTime, endTime, color1, color2, grass, textColor)
case .night(let startTime, let endTime, let color1, let color2, let grass, let textColor):
return (startTime, endTime, color1, color2, grass, textColor)
case .morning(let startTime, let endTime, let color1, let color2, let grass, let textColor, let dayCycle):
return (startTime, endTime, color1, color2, grass, textColor, dayCycle)
case .afternoon(let startTime, let endTime, let color1, let color2, let grass, let textColor, let dayCycle):
return (startTime, endTime, color1, color2, grass, textColor, dayCycle)
case .evening(let startTime, let endTime, let color1, let color2, let grass, let textColor, let dayCycle):
return (startTime, endTime, color1, color2, grass, textColor, dayCycle)
case .night(let startTime, let endTime, let color1, let color2, let grass, let textColor, let dayCycle):
return (startTime, endTime, color1, color2, grass, textColor, dayCycle)
}
}
@@ -42,11 +42,11 @@ enum TimePeriod : Equatable{
// Equatable protocol conformance to compare two TimePeriod instances.
static func ==(lhs: TimePeriod, rhs: TimePeriod) -> Bool {
switch (lhs, rhs) {
case let (.morning(startTime1, endTime1, color11, color12, grass1, textColor1), .morning(startTime2, endTime2, color21, color22, grass2, textColor2)),
let (.afternoon(startTime1, endTime1, color11, color12, grass1, textColor1), .afternoon(startTime2, endTime2, color21, color22, grass2, textColor2)),
let (.evening(startTime1, endTime1, color11, color12, grass1, textColor1), .evening(startTime2, endTime2, color21, color22, grass2, textColor2)),
let (.night(startTime1, endTime1, color11, color12, grass1, textColor1), .night(startTime2, endTime2, color21, color22, grass2, textColor2)):
return startTime1 == startTime2 && endTime1 == endTime2 && color11 == color21 && color12 == color22 && grass1 == grass2 && textColor1 == textColor2
case let (.morning(startTime1, endTime1, color11, color12, grass1, textColor1, dayCycle1), .morning(startTime2, endTime2, color21, color22, grass2, textColor2, dayCycle2)),
let (.afternoon(startTime1, endTime1, color11, color12, grass1, textColor1, dayCycle1), .afternoon(startTime2, endTime2, color21, color22, grass2, textColor2, dayCycle2)),
let (.evening(startTime1, endTime1, color11, color12, grass1, textColor1, dayCycle1), .evening(startTime2, endTime2, color21, color22, grass2, textColor2, dayCycle2)),
let (.night(startTime1, endTime1, color11, color12, grass1, textColor1, dayCycle1), .night(startTime2, endTime2, color21, color22, grass2, textColor2, dayCycle2)):
return startTime1 == startTime2 && endTime1 == endTime2 && color11 == color21 && color12 == color22 && grass1 == grass2 && textColor1 == textColor2 && dayCycle1 == dayCycle2
default:
return false
}
@@ -78,3 +78,11 @@ enum TimePeriod : Equatable{
}
}
}
enum DayCycle{
case morning
case afternoon
case evening
case night
}

View File

@@ -29,27 +29,35 @@
<rect key="frame" x="0.0" y="0.0" width="393" height="532.66666666666663"/>
<color key="backgroundColor" red="0.34901960780000002" green="0.81568627449999997" blue="0.99607843139999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</view>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Star" translatesAutoresizingMaskIntoConstraints="NO" id="s5k-HV-Zkc">
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Star" translatesAutoresizingMaskIntoConstraints="NO" id="s5k-HV-Zkc">
<rect key="frame" x="101" y="74.333333333333329" width="40" height="40"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="T5w-0w-VHk"/>
<constraint firstAttribute="height" constant="40" id="ijF-vI-jb7"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Star" translatesAutoresizingMaskIntoConstraints="NO" id="XTn-ID-1Yb">
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Star" translatesAutoresizingMaskIntoConstraints="NO" id="XTn-ID-1Yb">
<rect key="frame" x="20" y="225" width="30" height="30"/>
<constraints>
<constraint firstAttribute="height" constant="30" id="Kjd-Nt-Asn"/>
<constraint firstAttribute="width" secondItem="XTn-ID-1Yb" secondAttribute="height" multiplier="1:1" id="WO6-Ed-Yfd"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Star" translatesAutoresizingMaskIntoConstraints="NO" id="U1W-OZ-7vR">
<rect key="frame" x="184" y="374" width="25" height="25"/>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Star" translatesAutoresizingMaskIntoConstraints="NO" id="U1W-OZ-7vR">
<rect key="frame" x="184" y="377" width="25" height="25"/>
<constraints>
<constraint firstAttribute="width" secondItem="U1W-OZ-7vR" secondAttribute="height" multiplier="1:1" id="PvJ-97-UfQ"/>
<constraint firstAttribute="height" constant="25" id="vTp-0T-OjL"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Moon" translatesAutoresizingMaskIntoConstraints="NO" id="Jbf-Kl-35X">
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Star" translatesAutoresizingMaskIntoConstraints="NO" id="t3E-Cj-I2d">
<rect key="frame" x="268" y="415.66666666666669" width="20" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="8f0-Kf-opP"/>
<constraint firstAttribute="width" secondItem="t3E-Cj-I2d" secondAttribute="height" multiplier="1:1" id="bWZ-b9-ckU"/>
</constraints>
</imageView>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Moon" translatesAutoresizingMaskIntoConstraints="NO" id="Jbf-Kl-35X">
<rect key="frame" x="293" y="175" width="70" height="100"/>
<color key="tintColor" red="0.59309977107359713" green="0.60037522820196854" blue="0.93852707153973092" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
@@ -85,6 +93,39 @@
</label>
</subviews>
</stackView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xgH-t8-LiX" userLabel="GrassCloudView">
<rect key="frame" x="0.0" y="392" width="393" height="460"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Cloud1" translatesAutoresizingMaskIntoConstraints="NO" id="hnb-h6-Rgs" userLabel="LightCloud">
<rect key="frame" x="-183.66666666666666" y="-50" width="760.33333333333337" height="180"/>
<constraints>
<constraint firstAttribute="width" constant="760" id="R0a-7m-o4f"/>
<constraint firstAttribute="height" constant="180" id="laa-aE-ve4"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Cloud2" translatesAutoresizingMaskIntoConstraints="NO" id="lMA-vm-xCk" userLabel="DenseCloud">
<rect key="frame" x="-183.66666666666666" y="13" width="760.33333333333337" height="154"/>
<constraints>
<constraint firstAttribute="height" constant="154" id="0Dz-kQ-2bb"/>
<constraint firstAttribute="width" constant="760" id="teJ-X3-Yjs"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="HomeGrassDay" translatesAutoresizingMaskIntoConstraints="NO" id="bNd-CB-wx1">
<rect key="frame" x="0.0" y="0.0" width="393" height="460"/>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="lMA-vm-xCk" firstAttribute="centerX" secondItem="xgH-t8-LiX" secondAttribute="centerX" id="7h7-Ex-TCx"/>
<constraint firstAttribute="trailing" secondItem="bNd-CB-wx1" secondAttribute="trailing" id="CPG-40-ajT"/>
<constraint firstItem="bNd-CB-wx1" firstAttribute="top" secondItem="xgH-t8-LiX" secondAttribute="top" id="MJg-64-lcd"/>
<constraint firstItem="lMA-vm-xCk" firstAttribute="top" secondItem="xgH-t8-LiX" secondAttribute="top" constant="13" id="NQL-bt-Gqw"/>
<constraint firstItem="hnb-h6-Rgs" firstAttribute="top" secondItem="xgH-t8-LiX" secondAttribute="top" constant="-50" id="Rod-zu-LQ6"/>
<constraint firstItem="bNd-CB-wx1" firstAttribute="leading" secondItem="xgH-t8-LiX" secondAttribute="leading" id="kHa-Rp-Whd"/>
<constraint firstItem="hnb-h6-Rgs" firstAttribute="centerX" secondItem="xgH-t8-LiX" secondAttribute="centerX" id="m6c-e5-dms"/>
<constraint firstAttribute="bottom" secondItem="bNd-CB-wx1" secondAttribute="bottom" id="z1s-rg-Wln"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kzE-UE-7KK">
<rect key="frame" x="98.666666666666671" y="195" width="195.66666666666663" height="180.66666666666663"/>
<subviews>
@@ -133,39 +174,6 @@
<action selector="barButtonTapped:" destination="VXi-XB-hOy" eventType="touchUpInside" id="wHk-vO-OlX"/>
</connections>
</button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xgH-t8-LiX" userLabel="GrassCloudView">
<rect key="frame" x="0.0" y="404" width="393" height="448"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Cloud1" translatesAutoresizingMaskIntoConstraints="NO" id="hnb-h6-Rgs" userLabel="LightCloud">
<rect key="frame" x="-183.66666666666666" y="-50" width="760.33333333333337" height="180"/>
<constraints>
<constraint firstAttribute="width" constant="760" id="R0a-7m-o4f"/>
<constraint firstAttribute="height" constant="180" id="laa-aE-ve4"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Cloud2" translatesAutoresizingMaskIntoConstraints="NO" id="lMA-vm-xCk" userLabel="DenseCloud">
<rect key="frame" x="-183.66666666666666" y="13" width="760.33333333333337" height="154"/>
<constraints>
<constraint firstAttribute="height" constant="154" id="0Dz-kQ-2bb"/>
<constraint firstAttribute="width" constant="760" id="teJ-X3-Yjs"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="HomeGrassDay" translatesAutoresizingMaskIntoConstraints="NO" id="bNd-CB-wx1">
<rect key="frame" x="0.0" y="0.0" width="393" height="448"/>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="lMA-vm-xCk" firstAttribute="centerX" secondItem="xgH-t8-LiX" secondAttribute="centerX" id="7h7-Ex-TCx"/>
<constraint firstAttribute="trailing" secondItem="bNd-CB-wx1" secondAttribute="trailing" id="CPG-40-ajT"/>
<constraint firstItem="bNd-CB-wx1" firstAttribute="top" secondItem="xgH-t8-LiX" secondAttribute="top" id="MJg-64-lcd"/>
<constraint firstItem="lMA-vm-xCk" firstAttribute="top" secondItem="xgH-t8-LiX" secondAttribute="top" constant="13" id="NQL-bt-Gqw"/>
<constraint firstItem="hnb-h6-Rgs" firstAttribute="top" secondItem="xgH-t8-LiX" secondAttribute="top" constant="-50" id="Rod-zu-LQ6"/>
<constraint firstItem="bNd-CB-wx1" firstAttribute="leading" secondItem="xgH-t8-LiX" secondAttribute="leading" id="kHa-Rp-Whd"/>
<constraint firstItem="hnb-h6-Rgs" firstAttribute="centerX" secondItem="xgH-t8-LiX" secondAttribute="centerX" id="m6c-e5-dms"/>
<constraint firstAttribute="bottom" secondItem="bNd-CB-wx1" secondAttribute="bottom" id="z1s-rg-Wln"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ppi-HI-rj1" userLabel="IconView">
<rect key="frame" x="0.0" y="395.66666666666674" width="393" height="456.33333333333326"/>
<subviews>
@@ -190,7 +198,7 @@
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillProportionally" spacing="1" translatesAutoresizingMaskIntoConstraints="NO" id="lRy-nX-Xia" userLabel="LiveTV">
<rect key="frame" x="149" y="72.333333333333314" width="95" height="95"/>
<rect key="frame" x="149" y="52.333333333333314" width="95" height="95"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="LiveTV" translatesAutoresizingMaskIntoConstraints="NO" id="LoO-Qh-9ci">
<rect key="frame" x="0.0" y="0.0" width="95" height="79"/>
@@ -210,7 +218,7 @@
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillProportionally" spacing="1" translatesAutoresizingMaskIntoConstraints="NO" id="Sp0-yh-bdj" userLabel="WebSeries">
<rect key="frame" x="10" y="82.333333333333314" width="95" height="95"/>
<rect key="frame" x="10" y="77.333333333333314" width="95" height="95"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="WebSeries" translatesAutoresizingMaskIntoConstraints="NO" id="LGm-UX-yVh">
<rect key="frame" x="0.0" y="0.0" width="95" height="79"/>
@@ -230,7 +238,7 @@
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillProportionally" spacing="1" translatesAutoresizingMaskIntoConstraints="NO" id="r88-JP-phS" userLabel="Games">
<rect key="frame" x="298" y="154.99999999999994" width="95" height="95"/>
<rect key="frame" x="298" y="134.99999999999994" width="95" height="95"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Games" translatesAutoresizingMaskIntoConstraints="NO" id="rhc-kY-sTl">
<rect key="frame" x="0.0" y="0.0" width="95" height="79"/>
@@ -250,7 +258,7 @@
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillProportionally" spacing="1" translatesAutoresizingMaskIntoConstraints="NO" id="JHO-R6-WGZ" userLabel="Audio Books">
<rect key="frame" x="169.33333333333334" y="222.33333333333334" width="114.33333333333334" height="95.333333333333343"/>
<rect key="frame" x="169.33333333333334" y="202.33333333333331" width="114.33333333333334" height="95.333333333333314"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="AudioBooks" translatesAutoresizingMaskIntoConstraints="NO" id="za2-oW-KjU">
<rect key="frame" x="0.0" y="0.0" width="114.33333333333333" height="79.333333333333329"/>
@@ -270,7 +278,7 @@
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillProportionally" spacing="1" translatesAutoresizingMaskIntoConstraints="NO" id="9fz-vc-Ufb" userLabel="Karaoke">
<rect key="frame" x="14.333333333333336" y="212.33333333333334" width="95" height="95.333333333333343"/>
<rect key="frame" x="14.333333333333336" y="192.33333333333331" width="95" height="95.333333333333314"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Karaoke" translatesAutoresizingMaskIntoConstraints="NO" id="DWF-Lu-F24">
<rect key="frame" x="0.0" y="0.0" width="95" height="79.333333333333329"/>
@@ -293,9 +301,9 @@
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="r88-JP-phS" firstAttribute="height" secondItem="ppi-HI-rj1" secondAttribute="height" multiplier="0.208333" id="0sg-36-CK8"/>
<constraint firstItem="Sp0-yh-bdj" firstAttribute="centerY" secondItem="lRy-nX-Xia" secondAttribute="centerY" constant="10" id="3t3-nm-6LF"/>
<constraint firstItem="Ehe-Th-asW" firstAttribute="baseline" secondItem="lRy-nX-Xia" secondAttribute="firstBaseline" constant="20" id="6HI-BQ-pxx"/>
<constraint firstItem="r88-JP-phS" firstAttribute="top" secondItem="Ehe-Th-asW" secondAttribute="bottom" constant="60" id="6wM-Ss-Lui"/>
<constraint firstItem="Sp0-yh-bdj" firstAttribute="centerY" secondItem="lRy-nX-Xia" secondAttribute="centerY" constant="25" id="3t3-nm-6LF"/>
<constraint firstItem="Ehe-Th-asW" firstAttribute="baseline" secondItem="lRy-nX-Xia" secondAttribute="firstBaseline" constant="40" id="6HI-BQ-pxx"/>
<constraint firstItem="r88-JP-phS" firstAttribute="top" secondItem="Ehe-Th-asW" secondAttribute="bottom" constant="40" id="6wM-Ss-Lui"/>
<constraint firstItem="JHO-R6-WGZ" firstAttribute="centerX" secondItem="lRy-nX-Xia" secondAttribute="centerX" constant="30" id="KjY-SZ-e5Z"/>
<constraint firstItem="r88-JP-phS" firstAttribute="centerX" secondItem="Ehe-Th-asW" secondAttribute="centerX" constant="10" id="M0G-TU-M2T"/>
<constraint firstItem="9fz-vc-Ufb" firstAttribute="height" secondItem="ppi-HI-rj1" secondAttribute="height" multiplier="0.208333" id="RjE-7v-VJf"/>
@@ -312,11 +320,31 @@
<constraint firstItem="JHO-R6-WGZ" firstAttribute="height" secondItem="ppi-HI-rj1" secondAttribute="height" multiplier="0.208333" id="z24-hh-k41"/>
</constraints>
</view>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="-2" translatesAutoresizingMaskIntoConstraints="NO" id="LYo-Uy-0nM" userLabel="More">
<rect key="frame" x="162.66666666666666" y="758" width="67.666666666666657" height="45"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="BottomArrow" translatesAutoresizingMaskIntoConstraints="NO" id="rdd-P1-Vk7">
<rect key="frame" x="0.0" y="0.0" width="67.666666666666671" height="32.333333333333336"/>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" text="MORE" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4pq-lE-hJz">
<rect key="frame" x="0.0" y="30.333333333333375" width="67.666666666666671" height="14.666666666666668"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="12"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="45" id="0hL-tE-AiW"/>
<constraint firstAttribute="width" secondItem="LYo-Uy-0nM" secondAttribute="height" multiplier="1.5:1" id="sgf-5C-jmD"/>
</constraints>
</stackView>
</subviews>
<viewLayoutGuide key="safeArea" id="vdl-cu-G32"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="t3E-Cj-I2d" firstAttribute="top" secondItem="ppi-HI-rj1" secondAttribute="top" constant="20" id="0ma-6s-cY3"/>
<constraint firstItem="Ehe-Th-asW" firstAttribute="leading" secondItem="t3E-Cj-I2d" secondAttribute="trailing" id="1lg-KO-GFR"/>
<constraint firstItem="jdZ-WQ-xcr" firstAttribute="trailing" secondItem="vdl-cu-G32" secondAttribute="trailing" id="1om-dS-PtT"/>
<constraint firstItem="kzE-UE-7KK" firstAttribute="top" secondItem="sf9-me-n7i" secondAttribute="bottom" constant="30" id="2cv-dI-9b7"/>
<constraint firstItem="xgH-t8-LiX" firstAttribute="trailing" secondItem="vdl-cu-G32" secondAttribute="trailing" id="55h-eD-07b"/>
@@ -326,25 +354,26 @@
<constraint firstItem="vdl-cu-G32" firstAttribute="trailing" secondItem="b3F-hf-9c8" secondAttribute="trailing" constant="15" id="84K-nZ-Rfz"/>
<constraint firstAttribute="bottom" secondItem="ppi-HI-rj1" secondAttribute="bottom" id="Ahn-Nf-O3r"/>
<constraint firstItem="rkf-MW-5IL" firstAttribute="leading" secondItem="vdl-cu-G32" secondAttribute="leading" constant="10" id="B4I-l7-DMO"/>
<constraint firstItem="xgH-t8-LiX" firstAttribute="top" secondItem="U1W-OZ-7vR" secondAttribute="bottom" constant="5" id="CIy-vs-vwp"/>
<constraint firstItem="xgH-t8-LiX" firstAttribute="top" secondItem="U1W-OZ-7vR" secondAttribute="bottom" constant="-10" id="CIy-vs-vwp"/>
<constraint firstItem="ppi-HI-rj1" firstAttribute="trailing" secondItem="vdl-cu-G32" secondAttribute="trailing" id="DQI-oo-bqb"/>
<constraint firstItem="ppi-HI-rj1" firstAttribute="leading" secondItem="vdl-cu-G32" secondAttribute="leading" id="DnV-cr-qUh"/>
<constraint firstAttribute="bottom" secondItem="xgH-t8-LiX" secondAttribute="bottom" id="KLp-zL-JIG"/>
<constraint firstItem="sf9-me-n7i" firstAttribute="top" secondItem="vdl-cu-G32" secondAttribute="top" constant="5" id="MnT-8w-p9T"/>
<constraint firstItem="U1W-OZ-7vR" firstAttribute="centerX" secondItem="vdl-cu-G32" secondAttribute="centerX" id="NqK-Cw-qNu"/>
<constraint firstItem="U1W-OZ-7vR" firstAttribute="width" secondItem="U1W-OZ-7vR" secondAttribute="height" multiplier="1:1" id="PvJ-97-UfQ"/>
<constraint firstItem="XTn-ID-1Yb" firstAttribute="top" secondItem="sf9-me-n7i" secondAttribute="bottom" constant="60" id="Q9c-DO-OgW"/>
<constraint firstItem="o2x-QJ-V9A" firstAttribute="height" secondItem="UEh-jl-IQp" secondAttribute="height" multiplier="0.0558036" id="UDY-Wb-Xsa"/>
<constraint firstItem="Jbf-Kl-35X" firstAttribute="top" secondItem="sf9-me-n7i" secondAttribute="bottom" constant="10" id="VLa-Ha-6Yo"/>
<constraint firstItem="xgH-t8-LiX" firstAttribute="height" secondItem="UEh-jl-IQp" secondAttribute="height" multiplier="0.539906" id="YFN-fY-VOP"/>
<constraint firstItem="rkf-MW-5IL" firstAttribute="centerY" secondItem="sf9-me-n7i" secondAttribute="centerY" constant="-20" id="ZVu-Px-dqT"/>
<constraint firstItem="xgH-t8-LiX" firstAttribute="leading" secondItem="vdl-cu-G32" secondAttribute="leading" id="axA-78-I8c"/>
<constraint firstItem="jdZ-WQ-xcr" firstAttribute="height" secondItem="UEh-jl-IQp" secondAttribute="height" multiplier="0.625" id="dfh-6o-p0D"/>
<constraint firstItem="LYo-Uy-0nM" firstAttribute="centerX" secondItem="vdl-cu-G32" secondAttribute="centerX" id="f0k-KL-GNO"/>
<constraint firstItem="s5k-HV-Zkc" firstAttribute="centerY" secondItem="rkf-MW-5IL" secondAttribute="centerY" id="fHp-Jm-GAf"/>
<constraint firstItem="jdZ-WQ-xcr" firstAttribute="top" secondItem="UEh-jl-IQp" secondAttribute="top" id="kVK-dJ-BXA"/>
<constraint firstItem="kzE-UE-7KK" firstAttribute="centerX" secondItem="vdl-cu-G32" secondAttribute="centerX" id="lxF-lj-Z1U"/>
<constraint firstItem="xgH-t8-LiX" firstAttribute="height" secondItem="UEh-jl-IQp" secondAttribute="height" multiplier="0.52567" id="pHy-CM-iKk"/>
<constraint firstItem="XTn-ID-1Yb" firstAttribute="leading" secondItem="vdl-cu-G32" secondAttribute="leading" constant="20" id="pPN-hO-fOe"/>
<constraint firstItem="vdl-cu-G32" firstAttribute="trailing" secondItem="Jbf-Kl-35X" secondAttribute="trailing" constant="30" id="pzf-si-aC5"/>
<constraint firstItem="vdl-cu-G32" firstAttribute="bottom" secondItem="LYo-Uy-0nM" secondAttribute="bottom" constant="15" id="qYM-va-cyv"/>
<constraint firstItem="kzE-UE-7KK" firstAttribute="height" secondItem="UEh-jl-IQp" secondAttribute="height" multiplier="0.212054" id="s5Y-TI-1sZ"/>
<constraint firstItem="ppi-HI-rj1" firstAttribute="height" secondItem="UEh-jl-IQp" secondAttribute="height" multiplier="0.535714" id="sLx-ty-T4s"/>
<constraint firstItem="sf9-me-n7i" firstAttribute="centerX" secondItem="vdl-cu-G32" secondAttribute="centerX" id="vZE-xF-UKh"/>
@@ -358,11 +387,14 @@
<outlet property="homeGrass" destination="bNd-CB-wx1" id="Rhs-zT-ChZ"/>
<outlet property="liveTVView" destination="kzE-UE-7KK" id="wh1-1v-X4B"/>
<outlet property="liveTvPlayer" destination="edI-4n-4AY" id="Ofv-d0-YP4"/>
<outlet property="moonImage" destination="Jbf-Kl-35X" id="WBx-uu-r3W"/>
<outlet property="nameLabel" destination="tQN-s8-9SK" id="GIQ-nv-8rM"/>
<outlet property="webSeriesView" destination="Sp0-yh-bdj" id="HMn-cX-z6Y"/>
<outlet property="welcomeLabel" destination="dnl-w0-q5K" id="ePX-F9-APX"/>
<outletCollection property="star" destination="XTn-ID-1Yb" collectionClass="NSMutableArray" id="8Fh-RB-UOY"/>
<outletCollection property="star" destination="s5k-HV-Zkc" collectionClass="NSMutableArray" id="icE-65-uve"/>
<outletCollection property="star" destination="U1W-OZ-7vR" collectionClass="NSMutableArray" id="21j-eq-JQi"/>
<outletCollection property="star" destination="t3E-Cj-I2d" collectionClass="NSMutableArray" id="HTJ-Bj-Pjs"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Xus-eA-saB" sceneMemberID="firstResponder"/>
@@ -378,14 +410,14 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ksi-1c-xBG">
<rect key="frame" x="0.0" y="134" width="393" height="220"/>
<rect key="frame" x="0.0" y="132.33333333333334" width="393" height="220.00000000000003"/>
<color key="backgroundColor" systemColor="systemGreenColor"/>
<constraints>
<constraint firstAttribute="height" constant="220" id="ezY-uu-Vnb"/>
</constraints>
</view>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4qI-5q-8TH">
<rect key="frame" x="338" y="69" width="40" height="40"/>
<rect key="frame" x="338" y="68.333333333333329" width="40" height="40"/>
<constraints>
<constraint firstAttribute="width" secondItem="4qI-5q-8TH" secondAttribute="height" multiplier="1:1" id="HP0-u8-WP8"/>
<constraint firstAttribute="height" constant="40" id="pa1-no-jcD"/>
@@ -400,22 +432,22 @@
</connections>
</button>
<stackView opaque="NO" contentMode="scaleToFill" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="wHk-XC-Cqq" userLabel="Avatar Stack">
<rect key="frame" x="10" y="64" width="234.66666666666666" height="50"/>
<rect key="frame" x="10" y="64" width="234.66666666666666" height="48.333333333333343"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Boy" translatesAutoresizingMaskIntoConstraints="NO" id="4xI-oX-ffb">
<rect key="frame" x="0.0" y="0.0" width="49.666666666666664" height="50"/>
<rect key="frame" x="0.0" y="0.0" width="49.666666666666664" height="48.333333333333336"/>
</imageView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="LZa-k2-Fa1">
<rect key="frame" x="59.666666666666686" y="0.0" width="175" height="50"/>
<rect key="frame" x="59.666666666666686" y="0.0" width="175" height="48.333333333333336"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" text="Hi, Vijay" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IFj-XX-sbq">
<rect key="frame" x="0.0" y="0.0" width="175" height="25.666666666666668"/>
<rect key="frame" x="0.0" y="0.0" width="175" height="24"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="20"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Welcome to WOKALAND" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Nbe-Ob-bia" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="30.666666666666671" width="175" height="19.333333333333329"/>
<rect key="frame" x="0.0" y="29" width="175" height="19.333333333333329"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
@@ -424,8 +456,11 @@
</stackView>
</subviews>
</stackView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="redraw" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="BottomFrame" translatesAutoresizingMaskIntoConstraints="NO" id="1fD-0F-KMn">
<rect key="frame" x="0.0" y="457.33333333333326" width="393" height="464.66666666666674"/>
</imageView>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wIw-DO-ba0">
<rect key="frame" x="0.0" y="359" width="393" height="493"/>
<rect key="frame" x="0.0" y="357.33333333333326" width="393" height="494.66666666666674"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="1iA-oh-toI">
<rect key="frame" x="0.0" y="0.0" width="393" height="184"/>
@@ -436,13 +471,13 @@
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="4rq-xX-XRh">
<collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="4rq-xX-XRh">
<rect key="frame" x="10" y="44" width="373" height="140"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="140" id="82w-Zb-27Q"/>
</constraints>
<collectionViewFlowLayout key="collectionViewLayout" automaticEstimatedItemSize="YES" minimumLineSpacing="10" minimumInteritemSpacing="10" id="v7N-mj-NZr">
<collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" minimumLineSpacing="10" minimumInteritemSpacing="10" id="v7N-mj-NZr">
<size key="itemSize" width="128" height="128"/>
<size key="headerReferenceSize" width="0.0" height="0.0"/>
<size key="footerReferenceSize" width="0.0" height="0.0"/>
@@ -468,12 +503,16 @@
<viewLayoutGuide key="safeArea" id="QRd-bR-MwE"/>
<color key="backgroundColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="1fD-0F-KMn" firstAttribute="leading" secondItem="QRd-bR-MwE" secondAttribute="leading" id="6I2-0g-j8p"/>
<constraint firstAttribute="bottom" secondItem="wIw-DO-ba0" secondAttribute="bottom" id="8aT-sg-dlZ"/>
<constraint firstItem="wIw-DO-ba0" firstAttribute="top" secondItem="Ksi-1c-xBG" secondAttribute="bottom" constant="5" id="9iK-1y-iUL"/>
<constraint firstItem="wIw-DO-ba0" firstAttribute="trailing" secondItem="QRd-bR-MwE" secondAttribute="trailing" id="B2f-vS-BlM"/>
<constraint firstAttribute="bottom" secondItem="1fD-0F-KMn" secondAttribute="bottom" constant="-70" id="Prn-39-0xD"/>
<constraint firstItem="wHk-XC-Cqq" firstAttribute="leading" secondItem="QRd-bR-MwE" secondAttribute="leading" constant="10" id="YGq-MK-aVC"/>
<constraint firstItem="wHk-XC-Cqq" firstAttribute="top" secondItem="QRd-bR-MwE" secondAttribute="top" constant="5" id="aC0-db-DaE"/>
<constraint firstItem="1fD-0F-KMn" firstAttribute="top" secondItem="wIw-DO-ba0" secondAttribute="top" constant="100" id="f0v-wy-myo"/>
<constraint firstItem="wIw-DO-ba0" firstAttribute="leading" secondItem="QRd-bR-MwE" secondAttribute="leading" id="icN-WK-7ux"/>
<constraint firstItem="1fD-0F-KMn" firstAttribute="trailing" secondItem="QRd-bR-MwE" secondAttribute="trailing" id="isc-ka-Z4S"/>
<constraint firstItem="QRd-bR-MwE" firstAttribute="trailing" secondItem="Ksi-1c-xBG" secondAttribute="trailing" id="l1S-Jm-gVK"/>
<constraint firstItem="Ksi-1c-xBG" firstAttribute="top" secondItem="wHk-XC-Cqq" secondAttribute="bottom" constant="20" id="nBa-4R-qSd"/>
<constraint firstItem="4qI-5q-8TH" firstAttribute="centerY" secondItem="wHk-XC-Cqq" secondAttribute="centerY" id="rWN-WN-Oxo"/>
@@ -488,30 +527,29 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="AKa-H1-a6U" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="2883" y="-1602"/>
<point key="canvasLocation" x="2881.679389312977" y="-1602.1126760563382"/>
</scene>
</scenes>
<resources>
<image name="AudioBooks" width="172" height="120"/>
<image name="BottomArrow" width="33" height="33"/>
<image name="BottomFrame" width="570.66668701171875" height="729.33331298828125"/>
<image name="Boy" width="49.666667938232422" height="50"/>
<image name="Cloud1" width="2469.666748046875" height="734.66668701171875"/>
<image name="Cloud2" width="2469.333251953125" height="354.66665649414062"/>
<image name="FM" width="76" height="76"/>
<image name="Games" width="108.33333587646484" height="115.33333587646484"/>
<image name="Games" width="164" height="130.66667175292969"/>
<image name="HomeGrassDay" width="570.66668701171875" height="641.33331298828125"/>
<image name="HomeIcon" width="26.666666030883789" height="26.666666030883789"/>
<image name="Karaoke" width="109.33333587646484" height="132.66667175292969"/>
<image name="LiveTV" width="106.66666412353516" height="128"/>
<image name="Karaoke" width="172" height="137.33332824707031"/>
<image name="LiveTV" width="172" height="122.66666412353516"/>
<image name="LiveTVBaloon" width="135" height="135"/>
<image name="LiveTVBorder" width="79.333335876464844" height="67"/>
<image name="Moon" width="144.66667175292969" height="144.66667175292969"/>
<image name="Shop" width="109.33333587646484" height="132.66667175292969"/>
<image name="Shop" width="165.33332824707031" height="148"/>
<image name="SideMenu" width="44" height="44"/>
<image name="Star" width="62.666667938232422" height="62.666667938232422"/>
<image name="WebSeries" width="164" height="118.66666412353516"/>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
<systemColor name="systemGreenColor">
<color red="0.20392156862745098" green="0.7803921568627451" blue="0.34901960784313724" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</systemColor>

View File

@@ -9,9 +9,13 @@ import UIKit
class HomeExploreCell: UICollectionViewCell {
@IBOutlet weak var cellBtn: UIImageView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
func setData(image : String){
self.cellBtn.image = UIImage(named: image)
}
}

View File

@@ -17,25 +17,26 @@
<rect key="frame" x="0.0" y="0.0" width="145" height="145"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zJF-6G-BCX">
<rect key="frame" x="10" y="5" width="125" height="135"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" image="WokaFM"/>
</button>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="WokaFMT2" translatesAutoresizingMaskIntoConstraints="NO" id="SFy-o2-AXG">
<rect key="frame" x="5" y="5" width="135" height="135"/>
</imageView>
</subviews>
</view>
<viewLayoutGuide key="safeArea" id="ZTg-uK-7eu"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="zJF-6G-BCX" secondAttribute="trailing" constant="10" id="0aI-CE-h7w"/>
<constraint firstItem="zJF-6G-BCX" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="10" id="JVa-UY-3k4"/>
<constraint firstAttribute="bottom" secondItem="zJF-6G-BCX" secondAttribute="bottom" constant="5" id="bRI-VS-Ul3"/>
<constraint firstItem="zJF-6G-BCX" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="5" id="vN2-2h-fzm"/>
<constraint firstItem="SFy-o2-AXG" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="5" id="Ogd-AO-BNT"/>
<constraint firstItem="SFy-o2-AXG" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="5" id="VKa-Pp-78L"/>
<constraint firstAttribute="bottom" secondItem="SFy-o2-AXG" secondAttribute="bottom" constant="5" id="iPy-xi-0TV"/>
<constraint firstAttribute="trailing" secondItem="SFy-o2-AXG" secondAttribute="trailing" constant="5" id="oqe-nc-acg"/>
</constraints>
<size key="customSize" width="145" height="145"/>
<connections>
<outlet property="cellBtn" destination="SFy-o2-AXG" id="nEY-rV-xHM"/>
</connections>
<point key="canvasLocation" x="199.23664122137404" y="22.183098591549296"/>
</collectionViewCell>
</objects>
<resources>
<image name="WokaFM" width="111.66666412353516" height="137"/>
<image name="WokaFMT2" width="111.66666412353516" height="137"/>
</resources>
</document>

View File

@@ -23,36 +23,40 @@ class ThemeOneVM{
handleTaps()
startGlowAnimation()
NotificationCenter.default.addObserver(self, selector: #selector(appDidEnterBackground), name: UIApplication.didEnterBackgroundNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(appWillEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.reloadTheme), name: NSNotification.Name(rawValue: K.NotificationCenterReloads.reloadTheme), object: nil)
}
func startGlowAnimation() {
for (index, imageView) in vc.star.enumerated() {
let animation = CABasicAnimation(keyPath: "opacity")
animation.fromValue = 1.0
animation.toValue = 0.07
animation.duration = 3.0
animation.autoreverses = true
animation.repeatCount = .infinity
// Calculate delay for each animation based on index
let delay = Double(index) * 1 // Adjust the delay as needed
// Apply the delay to the animation
animation.beginTime = CACurrentMediaTime() + delay
imageView.layer.add(animation, forKey: "glowAnimation")
}
// MARK: - Notification Center Handlers
@objc func reloadTheme(){
self.vc.delegate?.didPressSwitchButton(from: self.vc)
}
@objc func appDidEnterBackground() {
// Code to execute when the app enters the background
print("App entered background")
self.handleBackground()
}
@objc func appWillEnterForeground() {
// Code to execute when the app enters the foreground
print("App will enter foreground")
self.handleBackground()
}
// MARK: - Handle Tap Gesture
func handleTaps(){
//WebSeries
vc.webSeriesView.addTapGesture { [weak self] in
guard let self else {return}
ViewButtonAnimation.sharedInstance.btnTapped(in: self.vc, view: vc.webSeriesView)
self.vc.delegate?.didPressSwitchButton(from: self.vc)
ViewButtonAnimation.sharedInstance.btnTapped(in: self.vc, view: vc.webSeriesView) {
self.vc.delegate?.didPressSwitchButton(from: self.vc)
}
}
//LiveTV
@@ -163,8 +167,19 @@ class ThemeOneVM{
for period in AuthFunc.shareInstance.timePeriods {
if period.contains(currentTime: currentTime) {
let details = period.details
// Update view's background color with a gradient or single color
DispatchQueue.main.async { [self] in
DispatchQueue.main.async { [weak self] in
guard let self else{return}
if period.details.dayCycle == .night{
startStarGlowAnimation()
}else{
//just hide the moon and star if its not night
!vc.moonImage.isHidden ? vc.moonImage.isHidden = true : nil
vc.star.forEach { image in
!image.isHidden ? image.isHidden = true : nil
}
}
vc.gradientView.applyGradient(colors: [details.color1, details.color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 0.8))
vc.nameLabel.textColor = details.textColor
vc.welcomeLabel.textColor = details.textColor
@@ -175,6 +190,28 @@ class ThemeOneVM{
}
}
func startStarGlowAnimation() {
vc.moonImage.isHidden ? vc.moonImage.isHidden = false : nil
for (index, imageView) in vc.star.enumerated() {
//If star is hidden just unhide it for the night time
(vc.star[index].isHidden) ? (vc.star[index].isHidden = false) : nil
let animation = CABasicAnimation(keyPath: "opacity")
animation.fromValue = 1.0
animation.toValue = 0.07
animation.duration = 3.0
animation.autoreverses = true
animation.repeatCount = .infinity
// Calculate delay for each animation based on index
let delay = Double(index) * 1 // Adjust the delay as needed
// Apply the delay to the animation
animation.beginTime = CACurrentMediaTime() + delay
imageView.layer.add(animation, forKey: "glowAnimation")
}
}
func startInitialTimer() {
self.handleBackground()
let now = Date()
@@ -190,7 +227,7 @@ class ThemeOneVM{
self.handleBackground()
// Schedule the repeating timer to fire every minute
vc.timer = Timer.scheduledTimer(timeInterval: 60, target: self, selector: #selector(handleBackground), userInfo: nil, repeats: false)
vc.timer = Timer.scheduledTimer(timeInterval: 60, target: self, selector: #selector(handleBackground), userInfo: nil, repeats: true)
}
}

View File

@@ -0,0 +1,32 @@
//
// ThemeTwoVM.swift
// WOKA
//
// Created by MacBook Pro on 27/05/24.
//
import UIKit
class ThemeTwoVM{
weak var vc : ThemeTwoVC!
var cellData = ["WokaFMT2", "LiveTVT2", "WebSeriesT2", "GamesT2", "AudioBooksT2", "KaraokeT2", "ShopT2"]
func initView(){
setupCell()
NotificationCenter.default.addObserver(self, selector: #selector(self.reloadTheme), name: NSNotification.Name(rawValue: K.NotificationCenterReloads.reloadTheme), object: nil)
}
// MARK: - Notification Center Handlers
@objc func reloadTheme(){
self.vc.delegate?.didPressSwitchButton(from: self.vc)
}
func setupCell(){
vc.collectionView.register(UINib(nibName: K.CellIdentifier.Theme.homeExploreCell, bundle: nil), forCellWithReuseIdentifier: K.CellIdentifier.Theme.homeExploreCell)
vc.collectionView.delegate = vc.self
vc.collectionView.dataSource = vc.self
}
}