From fa37c18dbe55ba621583e865008772a03bdfc3b5 Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Thu, 7 Dec 2023 14:22:13 +0000 Subject: [PATCH 1/6] add new tab icons feature flag --- WordPress/Classes/Utility/BuildInformation/FeatureFlag.swift | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/WordPress/Classes/Utility/BuildInformation/FeatureFlag.swift b/WordPress/Classes/Utility/BuildInformation/FeatureFlag.swift index 74f4038f8ecd..8e5336fa6f94 100644 --- a/WordPress/Classes/Utility/BuildInformation/FeatureFlag.swift +++ b/WordPress/Classes/Utility/BuildInformation/FeatureFlag.swift @@ -11,6 +11,7 @@ enum FeatureFlag: Int, CaseIterable { case commentModerationUpdate case compliancePopover case googleDomainsCard + case newTabIcons /// Returns a boolean indicating if the feature is enabled var enabled: Bool { @@ -37,6 +38,8 @@ enum FeatureFlag: Int, CaseIterable { return true case .googleDomainsCard: return false + case .newTabIcons: + return BuildConfiguration.current == .localDeveloper } } @@ -77,6 +80,8 @@ extension FeatureFlag { return "Compliance Popover" case .googleDomainsCard: return "Google Domains Promotional Card" + case .newTabIcons: + return "New Tab Icons" } } } From cc4c3209aec0261a820e60ac6f4a461d92053fcb Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Thu, 7 Dec 2023 14:22:41 +0000 Subject: [PATCH 2/6] update tab icons --- .../Coordinators/MySitesCoordinator.swift | 11 ++++-- .../System/WPTabBarController+MeTab.swift | 18 +++++++-- .../ViewRelated/System/WPTabBarController.m | 36 +++++++++++++----- .../Bottom Tabs/Contents.json | 6 +++ .../Contents.json | 12 ++++++ .../tab-bar-home-selected.pdf | Bin 0 -> 2881 bytes .../Contents.json | 22 +++++++++++ .../tab-bar-home-unselected-dark.pdf | Bin 0 -> 2881 bytes .../tab-bar-home-unselected.pdf | Bin 0 -> 2881 bytes .../Contents.json | 12 ++++++ .../tab-bar-me-selected.pdf | Bin 0 -> 1791 bytes .../Contents.json | 22 +++++++++++ .../tab-bar-me-unselected-dark.pdf | Bin 0 -> 1791 bytes .../tab-bar-me-unselected.pdf | Bin 0 -> 1791 bytes .../Contents.json | 12 ++++++ .../tab-bar-notifications-selected.pdf | Bin 0 -> 2001 bytes .../Contents.json | 22 +++++++++++ .../tab-bar-notifications-unread-jp-dark.pdf | Bin 0 -> 2345 bytes .../tab-bar-notifications-unread-jp.pdf | Bin 0 -> 2345 bytes .../Contents.json | 22 +++++++++++ .../tab-bar-notifications-unread-wp-dark.pdf | Bin 0 -> 2345 bytes .../tab-bar-notifications-unread-wp.pdf | Bin 0 -> 2345 bytes .../Contents.json | 22 +++++++++++ .../tab-bar-notifications-unselected-dark.pdf | Bin 0 -> 2001 bytes .../tab-bar-notifications-unselected.pdf | Bin 0 -> 2001 bytes .../Contents.json | 12 ++++++ .../tab-bar-reader-selected.pdf | Bin 0 -> 3844 bytes .../Contents.json | 22 +++++++++++ .../tab-bar-reader-unselected-dark.pdf | Bin 0 -> 3844 bytes .../tab-bar-reader-unselected.pdf | Bin 0 -> 3844 bytes 30 files changed, 235 insertions(+), 16 deletions(-) create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/Contents.json create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-home-selected.imageset/Contents.json create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-home-selected.imageset/tab-bar-home-selected.pdf create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-home-unselected.imageset/Contents.json create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-home-unselected.imageset/tab-bar-home-unselected-dark.pdf create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-home-unselected.imageset/tab-bar-home-unselected.pdf create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-me-selected.imageset/Contents.json create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-me-selected.imageset/tab-bar-me-selected.pdf create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-me-unselected.imageset/Contents.json create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-me-unselected.imageset/tab-bar-me-unselected-dark.pdf create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-me-unselected.imageset/tab-bar-me-unselected.pdf create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-selected.imageset/Contents.json create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-selected.imageset/tab-bar-notifications-selected.pdf create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unread-jp.imageset/Contents.json create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unread-jp.imageset/tab-bar-notifications-unread-jp-dark.pdf create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unread-jp.imageset/tab-bar-notifications-unread-jp.pdf create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unread-wp.imageset/Contents.json create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unread-wp.imageset/tab-bar-notifications-unread-wp-dark.pdf create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unread-wp.imageset/tab-bar-notifications-unread-wp.pdf create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unselected.imageset/Contents.json create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unselected.imageset/tab-bar-notifications-unselected-dark.pdf create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unselected.imageset/tab-bar-notifications-unselected.pdf create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-selected.imageset/Contents.json create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-selected.imageset/tab-bar-reader-selected.pdf create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-unselected.imageset/Contents.json create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-unselected.imageset/tab-bar-reader-unselected-dark.pdf create mode 100644 WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-unselected.imageset/tab-bar-reader-unselected.pdf diff --git a/WordPress/Classes/ViewRelated/System/Coordinators/MySitesCoordinator.swift b/WordPress/Classes/ViewRelated/System/Coordinators/MySitesCoordinator.swift index d8a6da4360bc..732f4b75633c 100644 --- a/WordPress/Classes/ViewRelated/System/Coordinators/MySitesCoordinator.swift +++ b/WordPress/Classes/ViewRelated/System/Coordinators/MySitesCoordinator.swift @@ -69,9 +69,14 @@ class MySitesCoordinator: NSObject { navigationController.restorationIdentifier = MySitesCoordinator.navigationControllerRestorationID navigationController.navigationBar.isTranslucent = false - let tabBarImage = AppStyleGuide.mySiteTabIcon - navigationController.tabBarItem.image = tabBarImage - navigationController.tabBarItem.selectedImage = tabBarImage + if FeatureFlag.newTabIcons.enabled { + navigationController.tabBarItem.image = UIImage(named: "tab-bar-home-unselected") + navigationController.tabBarItem.selectedImage = UIImage(named: "tab-bar-home-selected") + } else { + let tabBarImage = AppStyleGuide.mySiteTabIcon + navigationController.tabBarItem.image = tabBarImage + navigationController.tabBarItem.selectedImage = tabBarImage + } navigationController.tabBarItem.accessibilityLabel = NSLocalizedString("My Site", comment: "The accessibility value of the my site tab.") navigationController.tabBarItem.accessibilityIdentifier = "mySitesTabButton" navigationController.tabBarItem.title = NSLocalizedString("My Site", comment: "The accessibility value of the my site tab.") diff --git a/WordPress/Classes/ViewRelated/System/WPTabBarController+MeTab.swift b/WordPress/Classes/ViewRelated/System/WPTabBarController+MeTab.swift index e803229578bd..b30a7df60078 100644 --- a/WordPress/Classes/ViewRelated/System/WPTabBarController+MeTab.swift +++ b/WordPress/Classes/ViewRelated/System/WPTabBarController+MeTab.swift @@ -14,9 +14,13 @@ extension WPTabBarController { NotificationCenter.default.addObserver(self, selector: #selector(accountDidChange), name: .WPAccountEmailAndDefaultBlogUpdated, object: nil) } - @objc func configureMeTabImage(placeholderImage: UIImage) { - meNavigationController?.tabBarItem.image = placeholderImage - meNavigationController?.tabBarItem.selectedImage = placeholderImage + @objc func configureMeTabImage(placeholderImage: UIImage?) { + configureMeTabImage(unselectedPlaceholderImage: placeholderImage, selectedPlaceholderImage: placeholderImage) + } + + @objc func configureMeTabImage(unselectedPlaceholderImage: UIImage?, selectedPlaceholderImage: UIImage?) { + meNavigationController?.tabBarItem.image = unselectedPlaceholderImage + meNavigationController?.tabBarItem.selectedImage = selectedPlaceholderImage guard let account = defaultAccount(), let email = account.email else { @@ -45,7 +49,13 @@ extension WPTabBarController { } @objc private func accountDidChange() { - configureMeTabImage(placeholderImage: UIImage(named: "icon-tab-me") ?? UIImage()) + guard FeatureFlag.newTabIcons.enabled else { + configureMeTabImage(placeholderImage: UIImage(named: "icon-tab-me")) + return + } + + configureMeTabImage(unselectedPlaceholderImage: UIImage(named: "tab-bar-me-unselected"), + selectedPlaceholderImage: UIImage(named: "tab-bar-me-selected")) } } diff --git a/WordPress/Classes/ViewRelated/System/WPTabBarController.m b/WordPress/Classes/ViewRelated/System/WPTabBarController.m index 390af0d56201..b7a2c61c602a 100644 --- a/WordPress/Classes/ViewRelated/System/WPTabBarController.m +++ b/WordPress/Classes/ViewRelated/System/WPTabBarController.m @@ -181,9 +181,14 @@ - (UINavigationController *)readerNavigationController _readerNavigationController.navigationBar.translucent = NO; _readerNavigationController.view.backgroundColor = [UIColor murielBasicBackground]; - UIImage *readerTabBarImage = [UIImage imageNamed:@"icon-tab-reader"]; - _readerNavigationController.tabBarItem.image = readerTabBarImage; - _readerNavigationController.tabBarItem.selectedImage = readerTabBarImage; + if ([Feature enabled:FeatureFlagNewTabIcons]) { + _readerNavigationController.tabBarItem.image = [UIImage imageNamed:@"tab-bar-reader-unselected"]; + _readerNavigationController.tabBarItem.selectedImage = [UIImage imageNamed:@"tab-bar-reader-selected"]; + } else { + UIImage *readerTabBarImage = [UIImage imageNamed:@"icon-tab-reader"]; + _readerNavigationController.tabBarItem.image = readerTabBarImage; + _readerNavigationController.tabBarItem.selectedImage = readerTabBarImage; + } _readerNavigationController.restorationIdentifier = WPReaderNavigationRestorationID; _readerNavigationController.tabBarItem.accessibilityIdentifier = @"readerTabButton"; _readerNavigationController.tabBarItem.title = NSLocalizedString(@"Reader", @"The accessibility value of the Reader tab."); @@ -207,11 +212,19 @@ - (UINavigationController *)notificationsNavigationController } _notificationsNavigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController]; _notificationsNavigationController.navigationBar.translucent = NO; - self.notificationsTabBarImage = [UIImage imageNamed:@"icon-tab-notifications"]; - NSString *unreadImageName = [AppConfiguration isJetpack] ? @"icon-tab-notifications-unread-jetpack" : @"icon-tab-notifications-unread"; - self.notificationsTabBarImageUnread = [[UIImage imageNamed:unreadImageName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; - _notificationsNavigationController.tabBarItem.image = self.notificationsTabBarImage; - _notificationsNavigationController.tabBarItem.selectedImage = self.notificationsTabBarImage; + if ([Feature enabled:FeatureFlagNewTabIcons]) { + self.notificationsTabBarImage = [UIImage imageNamed:@"tab-bar-notifications-unselected"]; + NSString *unreadImageName = [AppConfiguration isJetpack] ? @"tab-bar-notifications-unread-jp" : @"tab-bar-notifications-unread-wp"; + self.notificationsTabBarImageUnread = [[UIImage imageNamed:unreadImageName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; + _notificationsNavigationController.tabBarItem.image = self.notificationsTabBarImage; + _notificationsNavigationController.tabBarItem.selectedImage = [UIImage imageNamed:@"tab-bar-notifications-selected"]; + } else { + self.notificationsTabBarImage = [UIImage imageNamed:@"icon-tab-notifications"]; + NSString *unreadImageName = [AppConfiguration isJetpack] ? @"icon-tab-notifications-unread-jetpack" : @"icon-tab-notifications-unread"; + self.notificationsTabBarImageUnread = [[UIImage imageNamed:unreadImageName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; + _notificationsNavigationController.tabBarItem.image = self.notificationsTabBarImage; + _notificationsNavigationController.tabBarItem.selectedImage = self.notificationsTabBarImage; + } _notificationsNavigationController.restorationIdentifier = WPNotificationsNavigationRestorationID; _notificationsNavigationController.tabBarItem.accessibilityIdentifier = @"notificationsTabButton"; _notificationsNavigationController.tabBarItem.accessibilityLabel = NSLocalizedString(@"Notifications", @"Notifications tab bar item accessibility label"); @@ -224,7 +237,12 @@ - (UINavigationController *)meNavigationController { if (!_meNavigationController) { _meNavigationController = [[UINavigationController alloc] initWithRootViewController:self.meViewController]; - [self configureMeTabImageWithPlaceholderImage:[UIImage imageNamed:@"icon-tab-me"]]; + if ([Feature enabled:FeatureFlagNewTabIcons]) { + [self configureMeTabImageWithUnselectedPlaceholderImage:[UIImage imageNamed:@"tab-bar-me-unselected"] + selectedPlaceholderImage:[UIImage imageNamed:@"tab-bar-me-selected"]]; + } else { + [self configureMeTabImageWithPlaceholderImage:[UIImage imageNamed:@"icon-tab-me"]]; + } _meNavigationController.restorationIdentifier = WPMeNavigationRestorationID; _meNavigationController.tabBarItem.accessibilityLabel = NSLocalizedString(@"Me", @"The accessibility value of the me tab."); _meNavigationController.tabBarItem.accessibilityIdentifier = @"meTabButton"; diff --git a/WordPress/Resources/AppImages.xcassets/Bottom Tabs/Contents.json b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/Contents.json new file mode 100644 index 000000000000..73c00596a7fc --- /dev/null +++ b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-home-selected.imageset/Contents.json b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-home-selected.imageset/Contents.json new file mode 100644 index 000000000000..389937d2e482 --- /dev/null +++ b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-home-selected.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "tab-bar-home-selected.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-home-selected.imageset/tab-bar-home-selected.pdf b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-home-selected.imageset/tab-bar-home-selected.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cf3214b74428297825b253ba8eca9faa969031b7 GIT binary patch literal 2881 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 I_U6;wUqx?pE&u=k literal 0 HcmV?d00001 diff --git a/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-me-unselected.imageset/Contents.json b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-me-unselected.imageset/Contents.json new file mode 100644 index 000000000000..506d3351507e --- /dev/null +++ b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-me-unselected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "filename" : "tab-bar-me-unselected.pdf", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "tab-bar-me-unselected-dark.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-me-unselected.imageset/tab-bar-me-unselected-dark.pdf b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-me-unselected.imageset/tab-bar-me-unselected-dark.pdf new file mode 100644 index 0000000000000000000000000000000000000000..03957cbba0e4400afb9fbc44c7d76b82bdfdfed7 GIT binary patch literal 1791 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 literal 0 HcmV?d00001 diff --git a/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unread-jp.imageset/tab-bar-notifications-unread-jp.pdf b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unread-jp.imageset/tab-bar-notifications-unread-jp.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2c0cdbc0136848471a2e21fc17583d6b2bd1b8ca GIT binary patch literal 2345 zcma)8O>Y}F5WVwP@M0hd5Q;PW93Tjg*iBKiMO~%0AO~f=aTLhfMynKQe|;ZUyWEwP zL-t_Pk2AwJZ-yLS-QK);P9`Zu+UoAZXQlOv7y9K()$Z@gpNg0G>bG`(fBd8!z;&_e zkB4^ipjJ2SKij5V|NL5Czg_;-^y-VUCfP(b>F0HIxxk)}6e(yTBgwI~x_N*vpqQgx zE*!b!bl>c;ZHG^1!<=J`y10y(7?;JlsCU2|XB)E?6SAE z;@(N26l@ZYvntdm@;J^XUK&y~K9NM$3^MGqBn>P&TQCwxDlrP!EKm>=mpFsY0wv=i z3yMT(I6YuxOr#>kP zCPg3Z;^>D0vJeC;9C0@4prKFBr@WC%N~q-$t62|9PL@!Jn3FA9pb#!1VU60LbSe2# zVnH4r`g()k=f$Z|qmqfqC!9FjMdKik0CJ@ao|6vXB_1lGTHZTGsT<`@@WKhjrs9#k zMN3c^T8yDdc0Riqf^=gy71z-YJjcGQ?6qebAnMDQdC zlxyZLaz<>Hh~~w;$%1}n=m8PBC_BwPO4ir0=PQhHxO%nUcgJ48dynymZ}r!|f46#dySZ;i;P>`! zyLsJx)9+@%suYeV$>-G+Y2EhS*F)3xx(wj;81A~;AKN`nEYo)aZ#M^EI*ia_Mi;2g z?$xi`J5bdngSDQ{x$eHgmoE7CKo*fO7Z;IAf_*)3PW*av-0ZshbJuT&_M@^osZ%GG zpE`zs2@81qFb{^6#^fG92cG4t5T5l5C{ucDCGt2H+c-NO51Z|-J*ZN>Uv41BlfHXs spXw*uyQe2nR_m@i>XPsv@apaMzZUF=e`+>|Y}F5WVwP@M0hd5Q;PW93Tjg*iBKiMO~%0AO~f=aTLhfMynKQe|;ZUyWEwP zL-t_PkMsFvhU2T-n>WwNB&A4O-F^71w0`kIzkI3M{ayJ}@e*JC*6#0*pR@zGE>ivR z&~6^o>Zbi?+qCPSU+e3)%fFgleNomVo5&{pyq+!(xbu-B1x;imIkr|e573RaeERax zH+x(Uw^nDvoMVi-sEn8xm&LiLcfcHH8?zP@varNrkI1<&(2t*1Lb)(q0 z5L4h16yXF5Y`nD@R*4Nciq4%u9Ec-Ahw3CJhQ+7k5Jv?WqzhRawFf(qQ_vg{xOY-Q z3O0#{uL?DaJly%jOF@dpCz8mT5e)k*Ndt?{7K{XxN{oVN7ARs6mpCJw1xm()78Hrn z;631EOQ?cqlMwTL>xH*bIsgE z&WOzt(Y%vIpT*Ye~n50R(V)bx&RShhPRNYkZ8cG$fNTaHF#p>bmsv2lY z6AwLHw%WL|ru|k{*=g@lvc9f8Utz4n)vNu!JNEkBd#p!%tH1vJyVa}P&3!upzqfbW z&Fk))em4_Vsc<||KA$E_>$dN{9-6k-WdW~8bJyMe*zV!6Y~KmI-5h{vlyiU%n#Nu4^e z{M0c7Y*@hKhkY=dG&cA6ImB7M3gKD5fHI}WQX-FSv5m9h@vzzM+Jh?9`{f37Jn6fK s_Njidy?c5hWwq|Qqb>;#1h3w1|7#Kb@K4R=a2(QMVyCXIe){9h{{r9S6#xJL literal 0 HcmV?d00001 diff --git a/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unread-wp.imageset/tab-bar-notifications-unread-wp.pdf b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unread-wp.imageset/tab-bar-notifications-unread-wp.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3d4ff59f51afee59bc3c9695490c3c2ddf1f2483 GIT binary patch literal 2345 zcma)8O>Y}F5WVwP@M0h-5Q;PW93TkL*iBKiMO~%0AO~f=aa73KR#J+zzrK&uE_Y?; zkUiM+<9xoE;rQzI=FJN-Nh#7+4G$`iPuc-o7pddv z&~F~p>Zbo^+x6=oU+e3)%fGs#`de9(Y$BWVi*|Z?z@3j2DQF@i$+5M%dw?#Wn4?}E z9J%E5vD@R?)=y`{oMVi-sEn8xm&LiLcfcHH8?zP@vap=(k#hk^f?~GtkV6oPK%_uX zcZ!V*F$FF`A&vwKY`nD@R*4Nciq2g?9Ec-Ahw3CJhQ%jDyqiG==|a{K(9!!w^8iZ(?T&r8D(c@a~)F(y3 zr0AnvxPB-g3xU8ABYdL{8vNvZ&KtR;gjz1KmUU%vk_1DVrGYt#m%OUaiK z3-a*b*Bku4EKY+ul}t=N!Q(6!jRQRb$dxj9PC6hi@n8|v^4>8@-6?N^7fvWP6^-mI zT7p7tF$O2u`Rry0)Q#O#R7W|)IriOd0iwl{BQH<}vp!U|1UaHN9IPbfi)Q}{)ujR- zzf*hl`?t<9$|abvq>~Yef_D9;DW>3q2SGss8f~0n6oU(9F{gN+rv3np7KZZ@!IL0h zuA95a8L?R+niq4E1^vw614NV&E~Tu4J0hKeIL4=5j#vQqcn1Qw8Z9*>nC5SRjZqbZ zBfB|rAc;NEoL`OeQO*}!)0Aw>8V}?+AMMUf2wG>nt7O|;9~6u)<~)S@vgM4C8j zL~B<-4P-a0yh_j}9SvInr!&V*yv2b@n#3E{4o|O|fkly;n$P^x3%XRjCHvBe!m}1NB!(%Y%z8`^K z`@8Mt_3%Z%n+a=FIG!kfDLtr;Z_D!vY>Z?1OsJ*xcji5NG)sglGK;lqo%y5_xQkZJZTPhs}1^A5^K{PdA|B w*>QO2pX+DayXR+8R_kFn>5_0Ic=dMsUytbPKQ)`fsiwokPF-F7@Y|dJ0joyjrvLx| literal 0 HcmV?d00001 diff --git a/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unselected.imageset/Contents.json b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unselected.imageset/Contents.json new file mode 100644 index 000000000000..98462678c016 --- /dev/null +++ b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unselected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "filename" : "tab-bar-notifications-unselected.pdf", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "tab-bar-notifications-unselected-dark.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unselected.imageset/tab-bar-notifications-unselected-dark.pdf b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unselected.imageset/tab-bar-notifications-unselected-dark.pdf new file mode 100644 index 0000000000000000000000000000000000000000..64520deb237825f4b85829aada0724606f60ce1a GIT binary patch literal 2001 zcma)7O>Y}F5WVwP@M0hd5Q;M#ehd%(%aB z&LKS5)LYKid&A+y_0^l_Hs39=>{89CJx2*=jOk>O#>FlHCCdTzo24T`bC)sz0I-B9IKjQX`ZYl@buGP_m6- z7h=khYf^+AJg^h*3%n9L3Y0>40C6NvNFAo9bLv;yO7!rh&%*%t6oMh6(mXQog(QJXG;44N7N;M@#HVYIvXvkcU&H^PTpamjP z9->F=yo)U2AxUwB5>i-l12Bbw5_Kp*1Qt4TFJOZF_aJ05ott#48l7voGoK7amy;yF z2z^&URsw-FN5qB>7W|ZQUpH#W8Cou}sp^5r(@8Ky%-L5iAVf$g*g_jfm$Ouf6?F*s z6^H*1#hIYSWS6pJM4Znh7eJ2!3RMQ-Y$Nhg0gF&eBrv3IjJPPu8DdklDB{r)6o(dL za8iPlFhihj?51iuokr*xiV_6`MU7~*@fJf2u9(L?#e6#T2Wa$gT$V_npkS_7ZRy`Rq%lAp%2Ofbgw>eYVV9eexkJ;pfJ>aTzQZtd!N zbK8!<@9oWY^Sb+H-_7JryaqloJnv4P)@|Q?Jv41^>qD^~-CcJ3W4lMh`bwO@>&*d} zjU%*pODZ(IF{@vTY8j#4`ks9^Lyc`7T8Y#=fW>H$IY(0eQ5ga z(0(-DW^+Gn>R+2;#7h8pT$o$K&fuKShEee|8G9>m15F8y*jv?XEqT zs@^YGpyNs3-L+5clkLsZds0^Gt~=UV@IdhD?e@PG*$SLMoBsi$ CI->dj literal 0 HcmV?d00001 diff --git a/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unselected.imageset/tab-bar-notifications-unselected.pdf b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-notifications-unselected.imageset/tab-bar-notifications-unselected.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3663a2fa0a0255d7a7446bef97ff3c4263b6ecc2 GIT binary patch literal 2001 zcma)7O^+Kl487}D=(0c(AhJkN9|VE`&2AF}ZPBgMThN0$JK4DKdK!;Yr2X}M8jojY zogAXWuKY$MA0H{|>h|XKb8^`jvfg%o{$;Fv@xs1*Y1;i={b_iKuYPX#_s5Sm09@Bo z{qfLl9?a^d{b$>>>o>3L^}FS-rZ=CAciCt1**>3kUvKbD5+#b3$Y~Djy=@*~3n-Oj zmzzK#2irG$eD=e##W9zZlC35qrY;l>A=w?Uz{RIx)y1N$Cw~+|1d?G`JR+1Bl@buG zP_m6-7h=khD=F~E@W4*IFYrq2C{POF5yX)=fjUgj=hU%E2IJifGDKJMK3Rb}iF34^ zKwN@WO3`N(#G0VSkRY67ULK_6B$Fn#3^FW5vjvuduNWyL)sz%$7AS~m$Xq~Yfszx* zf+A5KqDSn!i!9<%lHv#{q_ETmUX3j4EOgdhpal7EL0~hTo9b3;bXm)t`DiG* zoFw^0=!Xij5(KOq5gT=|(5IAB-pD0q)N+YUSr1B{PeLJL&c14aLWG2bEoy_(NMMw@G2)^qXB3;NMG=pd zpg6P`Lz5Dugc*W#V>eaP@f>)LeYabHXt5kf6vj|i;-HoyNAyO3m(2XA*}oxmt-yz8 zW^aD`-g}I4X-Qz5ooZ6F>v!E^iV_6^MU7~*@fM>PTrrP(iurWz56I}@xGWKj1ch?V z+(p5uFPhN2xHm=7&kQ{vM7_ebl*7dxk;dRSuFvps#3HoE9Ei|r^fV#SP4O1k$f_co zILyp}WEP@1zk%mP&I_&U^c_d*c@Ec+dz#M_lAp%2Ofbgw>WBTlJNEYd9~k3UtKa|q zyS1y^&3!upzqEJT&8zNnm{v zZ#M^EHjdEZEveA-#;ktY-hryE8LaI&&UN=0w)7SM9>~HI=J&!=O|YK=&WT@dj+R+2;#7h8pT$o$K&fyEZ2JP5pcxBagL`{D839F9Xel(U+vs~>-T F{XcX^qk{kd literal 0 HcmV?d00001 diff --git a/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-selected.imageset/Contents.json b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-selected.imageset/Contents.json new file mode 100644 index 000000000000..aedb797c23ed --- /dev/null +++ b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-selected.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "tab-bar-reader-selected.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-selected.imageset/tab-bar-reader-selected.pdf b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-selected.imageset/tab-bar-reader-selected.pdf new file mode 100644 index 0000000000000000000000000000000000000000..339c6d26aa4386e5623daf9c673c88a2bca3b6c8 GIT binary patch literal 3844 zcmeH~O^*{t5QgvbEBb;2kr;P%^{0f8!V;n=i9(j#P!5jQz(%`vvNjRPug_CsZ;uy{ zfNK;Bq2718tE=An?0e6jK6@x*83u9QZGZcHaPH9~_xSO!-dxz9Lpa43Kdd*e_ivm6 zp4+b7{${PTSY!P1u4>89KF?z z98i#m=&YPeU{P9g4J@S)5Wsf+fn;qdngF!(aoSUARahD7*f14>I46mtEYLfZ!1ku9 z!9InAR>=e;pHO8rw2{j+XRc{cb=qD^6{MFjWglZ`SrK7C6WD76MusCRq{- zoK>eq(o$mui5a4dgMKcLHHCVRRiwo1GNk#OY`dxH6=GY+O+BBQS7~Nn8j~7*V5nZP zFO5MJe}Q;y5kE%^6~#U_mso4%TtukUU{1==83ji|dMt;97O{nBD-avTDw2}X=)GJ(#MbLx8)&W;{d0 zCW6VRh8+Ah`Kkz<8)Yp?^!vsIp=m8BOXOi9LMd$jNFJ6$1gqV%}1k3WZQ8;u^Tdm}Vwawh;5w*y6F7bC}gcCk!u_sR+T3QVS@9 zk&{+K(6UkM#L_PkOIAZj+kkY~rp!)e1>a<y{4K}MppVRHMeEPENjWaTw;}3Tcdqa>;nyik+mb%i(+CtX1ciDC1VcE8x2X6 zZ0mVUAU-pE+I=Yq4d^5X>BN$hG3biCq(=nyF?29kG;6@*&0%z4g1n;xem@{q39~W) z7wbj`jH#E&ahjSCO|PS`Wo9w@1%1X-YOG%{S0wBB=*1@+Os?pW?{jlC=e<2xj<1p1 zr;EK(4o?~zHT#Q(;eUSVEWX}sw)>rX`719Uev4oJ{$uSH&zG;)N8rcx#pUwJ_MLla z98JG@p}6({&8u5U=j+|}?agYvbN046KZ-lsZuaX9H`>GM7JR; z{qLBtY4yOzA0yASa=glpKSfXbb%+@dpWKC1Q0y)g8U5db7<4ht#1b2sf+KP zLdX5x_Imxm-M_qea3E!IzTNJf89WiZcyam98ttd|>hfkknWK!R!@Yao{PgT!B|!yI literal 0 HcmV?d00001 diff --git a/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-unselected.imageset/Contents.json b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-unselected.imageset/Contents.json new file mode 100644 index 000000000000..44332fb41316 --- /dev/null +++ b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-unselected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "filename" : "tab-bar-reader-unselected.pdf", + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "tab-bar-reader-unselected-dark.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-unselected.imageset/tab-bar-reader-unselected-dark.pdf b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-unselected.imageset/tab-bar-reader-unselected-dark.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ad4e40803f651e6729639c390e1b86f5b2ca8cb1 GIT binary patch literal 3844 zcmeH~+m2H=6o&8jQ}_l6DzW3`vn7O7hEi2+RXX$z^&-t|V5*snr_paOe2qhiUzK|HgR0 zOWn2GZ>Qz$uy{KCb-kJ{zkOmZUY!56+6{jWGTQbt_Oy7|SN$7GxEiW662~Cob2h8n z!H(&4^!>$dwdQlkHl~bZ5lPOP+d*afkW&E+&eh@!kOW&|He45MDnSpFT2lmxA&5_A zg`OdK>%H+~D88g>+?ahW$VVq9S*i)6l@bwVAs(xN?bSK7 zQcRLW76hxbMfACZ0umCAQXlklX)Mu|gRCq$B$IHOO;NY2n%3jk>QeQVPt|&3tE* z_$28QAKENUE7AfTZYfHLQjRIW$*?R1@CAQ-ySJ z_%5@V$iUbLnbg%dhq$#^Wx?m_vKpmWQK3>DOz`;A!Br5rC?SBPj5js31jrK?Jtxo~ zR^<^w2_GH&tg3Ksnj?vfbX?r%=EaKYDF~I2tkTQYL`2Etlx$QkM)bo3JCviDz>b1zSS4- zS{s57lOA+19Di7LCGW{o^(>jic9K+b%tc*nrJ_12q!cJn%6W&2NI=aD4hY`PDLdb? zAlQIE2y)hFwNEZZtyxqI1Z3sBrZg1_p}2@^@HNI%HKDKt&QoKv#b(Z7Ru$hcqMTb1 z!atr`Kp702)Ea`8m0Bm7egQ6N4IynE((yKBwwdK@l~#ixiPk#qBY;I+1|_I*ocp4@ zkW45;ri?{AWZ~0iq(xSmW}=Rj#L;Rm5Tfny^%*D-4%!geKq-in95X{*28`?b&VB(1bMO9 z4?kcnDL6x228#53D0~!hw(4K|k@-MNa}`aN_I+KeSxASv3{BXh@?E>*LfLfu)VFs; z?SJ*vmz3Uq6oyghDJY*Vy#3zp_x~C8k!a2_?=hUA?!*5)!>9*2Q=BQEZnSg;ZyI6PG~@9IY=j#=oy1<$V+;JV;@5YgGJQ_Ox_$u2PVinIuQ2* zqLnat2H>pS=zuZxGC8)X3DNXA`dVTZqhHWxETu;K1#?Bzj*nh^(!u109{Ij+Zsxq# z2g~s_a(cSxE9LN{(NVL%Xc+$Im(Jqr^?I}4nU}xv^5M7mpDb zlg&HxQhn5Z^THF_12nHrk}jv+=IwSh?To&yE|20aHtYSg=0<&3oxtbIEtnw+4LW;% zDb$~3i|?;{%@GDY4yOzA0tm&8D3?_pGQyqb%+^|nB0ZDpx9j~F#5j-G3a(^zg=G6OxuBX z>f*bnxa0nAb2~jS_ph%W9GtSa+-&wn4Q>uzytw{nLi_e!U2gZy9M5Pv+`IS9PtX1Z DFFggS literal 0 HcmV?d00001 diff --git a/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-unselected.imageset/tab-bar-reader-unselected.pdf b/WordPress/Resources/AppImages.xcassets/Bottom Tabs/tab-bar-reader-unselected.imageset/tab-bar-reader-unselected.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f8f89ece67cfbe237a4d7a32dbfaba6ff75ea624 GIT binary patch literal 3844 zcmeH~%Z^h=5Qg{XDSCqhkvQ(^>Z^p1!Vsb;i9&|#P!^8Iz(g~4GBy#()90&WPah8; z0oy1RLOuWKuCB{pm%jJ>>9dD2mSGU*-S)TN2j?C=a*rPm>&=DzIfPSu@xyxadjG~L z;JNME?Qho0>tXS9{nzDceg5qeclP4+uhnk&bCA(bKj&{35BsWrLy6FeW+!QkB3g=D zT@QZDl5)))ofpbib-UGu&$0NF3!g!NzNX^1F8W-f9jLA4 z1d?JD?p>j0%<5I0j+ z7U-QyV0%;5V4p%lt7HO_PpGmQ+Q?;^GuO1JI&Ckd3ewA%vX8N_JtWm+_N7>A3!Gzn z3jwVR6XL*vVAW}nwA5HZB4NV5lXH2jDb$0kA|+;*ahlJ`wwsz>acm2@spnJkD$VRm zV^VV;7^+w7OJh(aULamuB+d~-MX`^~CDvLw7ZEBoSdcRAj6xuBdMt;97O{nBD>ycc zRU{>ggO0x8&OC)XhY(pbuEA+xOvyvXk07goUD1n_dDqqOYS;`ve=g^Pz)Q(K97wNK zFyoV?&xEKXU+vmVI1{7?3mNKwWhp)=p2C@M&XC*+Q2@y);A&V65lWm~9dpZg4^LIn zA>g~hW+DS)6J#=1;~e5P#i|HCH4%gbm8sycEA76u#ZG@j(Lya40Rv==NU#lC`>)HJyxFX5UAIm zZ0>2)YVGXEc8c#c)ub}A(s!x3E!#9~Qz&zZRc39C_DQi1G!RDCj#w{>iSd}};&zve zIWTWDBvG=h=P`l!%0h2d}(SZr_jt<2A zfLJBW$^cxf8yzsFUM9zBYC<%pKLI>qDQ{(o2xnR z?ZI+ zmru6u+)MM(^qUt-Xb;f5x|MXk-fiFBtkyecZ>#g8xU=nMzus`8J*;lQ=gS)~M-(RL zbZ#@!eD0aeueHUO#a6FE1V(oU%CIZuia%o*cY*arw_0?WgzZ@@7Aoql~7*y?fvM G^z2{iAqNBi literal 0 HcmV?d00001 From 3d2336475c7eb495b1d9335d0c066e1534966283 Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Wed, 3 Jan 2024 13:32:02 +0000 Subject: [PATCH 3/6] update rendering mode for unselected state --- .../System/Coordinators/MySitesCoordinator.swift | 2 +- WordPress/Classes/ViewRelated/System/WPTabBarController.m | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/WordPress/Classes/ViewRelated/System/Coordinators/MySitesCoordinator.swift b/WordPress/Classes/ViewRelated/System/Coordinators/MySitesCoordinator.swift index 732f4b75633c..1aa129f7ce44 100644 --- a/WordPress/Classes/ViewRelated/System/Coordinators/MySitesCoordinator.swift +++ b/WordPress/Classes/ViewRelated/System/Coordinators/MySitesCoordinator.swift @@ -70,7 +70,7 @@ class MySitesCoordinator: NSObject { navigationController.navigationBar.isTranslucent = false if FeatureFlag.newTabIcons.enabled { - navigationController.tabBarItem.image = UIImage(named: "tab-bar-home-unselected") + navigationController.tabBarItem.image = UIImage(named: "tab-bar-home-unselected")?.withRenderingMode(.alwaysOriginal) navigationController.tabBarItem.selectedImage = UIImage(named: "tab-bar-home-selected") } else { let tabBarImage = AppStyleGuide.mySiteTabIcon diff --git a/WordPress/Classes/ViewRelated/System/WPTabBarController.m b/WordPress/Classes/ViewRelated/System/WPTabBarController.m index b7a2c61c602a..b7672810aecf 100644 --- a/WordPress/Classes/ViewRelated/System/WPTabBarController.m +++ b/WordPress/Classes/ViewRelated/System/WPTabBarController.m @@ -182,7 +182,7 @@ - (UINavigationController *)readerNavigationController _readerNavigationController.view.backgroundColor = [UIColor murielBasicBackground]; if ([Feature enabled:FeatureFlagNewTabIcons]) { - _readerNavigationController.tabBarItem.image = [UIImage imageNamed:@"tab-bar-reader-unselected"]; + _readerNavigationController.tabBarItem.image = [[UIImage imageNamed:@"tab-bar-reader-unselected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; _readerNavigationController.tabBarItem.selectedImage = [UIImage imageNamed:@"tab-bar-reader-selected"]; } else { UIImage *readerTabBarImage = [UIImage imageNamed:@"icon-tab-reader"]; @@ -213,7 +213,7 @@ - (UINavigationController *)notificationsNavigationController _notificationsNavigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController]; _notificationsNavigationController.navigationBar.translucent = NO; if ([Feature enabled:FeatureFlagNewTabIcons]) { - self.notificationsTabBarImage = [UIImage imageNamed:@"tab-bar-notifications-unselected"]; + self.notificationsTabBarImage = [[UIImage imageNamed:@"tab-bar-notifications-unselected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; NSString *unreadImageName = [AppConfiguration isJetpack] ? @"tab-bar-notifications-unread-jp" : @"tab-bar-notifications-unread-wp"; self.notificationsTabBarImageUnread = [[UIImage imageNamed:unreadImageName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; _notificationsNavigationController.tabBarItem.image = self.notificationsTabBarImage; @@ -238,7 +238,7 @@ - (UINavigationController *)meNavigationController if (!_meNavigationController) { _meNavigationController = [[UINavigationController alloc] initWithRootViewController:self.meViewController]; if ([Feature enabled:FeatureFlagNewTabIcons]) { - [self configureMeTabImageWithUnselectedPlaceholderImage:[UIImage imageNamed:@"tab-bar-me-unselected"] + [self configureMeTabImageWithUnselectedPlaceholderImage:[[UIImage imageNamed:@"tab-bar-me-unselected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedPlaceholderImage:[UIImage imageNamed:@"tab-bar-me-selected"]]; } else { [self configureMeTabImageWithPlaceholderImage:[UIImage imageNamed:@"icon-tab-me"]]; From 3c190dc3a1d6be8534f87451f3cea703756c5803 Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Wed, 3 Jan 2024 14:47:31 +0000 Subject: [PATCH 4/6] add bounce animation when tab is selected --- .../System/WPTabBarController+Swift.swift | 14 ++++++++++++++ .../ViewRelated/System/WPTabBarController.m | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/WordPress/Classes/ViewRelated/System/WPTabBarController+Swift.swift b/WordPress/Classes/ViewRelated/System/WPTabBarController+Swift.swift index 0ab38e7acbff..a6becc8df5a2 100644 --- a/WordPress/Classes/ViewRelated/System/WPTabBarController+Swift.swift +++ b/WordPress/Classes/ViewRelated/System/WPTabBarController+Swift.swift @@ -106,4 +106,18 @@ extension WPTabBarController { return selectedViewController.supportedInterfaceOrientations } + + @objc func animateSelectedItem(_ item: UITabBarItem, for tabBar: UITabBar) { + + guard let index = tabBar.items?.firstIndex(of: item), tabBar.subviews.count > index + 1, + let imageView = tabBar.subviews[index + 1].subviews.last as? UIImageView else { + return + } + + let bounceAnimation = CAKeyframeAnimation(keyPath: "transform.scale") + bounceAnimation.values = [0.8, 1.02, 1.0] + bounceAnimation.duration = TimeInterval(0.2) + bounceAnimation.calculationMode = CAAnimationCalculationMode.cubic + imageView.layer.add(bounceAnimation, forKey: nil) + } } diff --git a/WordPress/Classes/ViewRelated/System/WPTabBarController.m b/WordPress/Classes/ViewRelated/System/WPTabBarController.m index b7672810aecf..33497e7988e7 100644 --- a/WordPress/Classes/ViewRelated/System/WPTabBarController.m +++ b/WordPress/Classes/ViewRelated/System/WPTabBarController.m @@ -490,6 +490,13 @@ - (void)showNotificationsTabForNoteWithID:(NSString *)notificationID [self.notificationsViewController showDetailsForNotificationWithID:notificationID]; } +#pragma mark - UITabBarDelegate + +- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item +{ + [self animateSelectedItem:item for:tabBar]; +} + #pragma mark - Zendesk Notifications - (void)updateIconIndicators:(NSNotification *)notification From 4b7a16ae0b7a308b5568806e3cd13a8828911095 Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Wed, 3 Jan 2024 15:15:10 +0000 Subject: [PATCH 5/6] add haptic feedback on tab selected --- WordPress/Classes/ViewRelated/System/WPTabBarController.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/WordPress/Classes/ViewRelated/System/WPTabBarController.m b/WordPress/Classes/ViewRelated/System/WPTabBarController.m index 33497e7988e7..cf722e609c93 100644 --- a/WordPress/Classes/ViewRelated/System/WPTabBarController.m +++ b/WordPress/Classes/ViewRelated/System/WPTabBarController.m @@ -494,6 +494,9 @@ - (void)showNotificationsTabForNoteWithID:(NSString *)notificationID - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { + UIImpactFeedbackGenerator *generator = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleMedium]; + [generator impactOccurred]; + [self animateSelectedItem:item for:tabBar]; } From 01fdd408360d3fbebdf350c098308c8bb379d8e3 Mon Sep 17 00:00:00 2001 From: Momo Ozawa Date: Wed, 3 Jan 2024 16:13:36 +0000 Subject: [PATCH 6/6] update me tab icon size --- .../Classes/ViewRelated/System/WPTabBarController+MeTab.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WordPress/Classes/ViewRelated/System/WPTabBarController+MeTab.swift b/WordPress/Classes/ViewRelated/System/WPTabBarController+MeTab.swift index b30a7df60078..82fdacb20be1 100644 --- a/WordPress/Classes/ViewRelated/System/WPTabBarController+MeTab.swift +++ b/WordPress/Classes/ViewRelated/System/WPTabBarController+MeTab.swift @@ -62,7 +62,7 @@ extension WPTabBarController { extension UITabBarItem { func configureGravatarImage(_ image: UIImage) { - let gravatarIcon = image.gravatarIcon(size: 28.0) + let gravatarIcon = image.gravatarIcon(size: 26.0) self.image = gravatarIcon?.blackAndWhite?.withAlpha(0.36) self.selectedImage = gravatarIcon }