12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #import "UITabBarController+RNNOptions.h"
- #import "RNNTabBarController.h"
-
- @implementation UITabBarController (RNNOptions)
-
- - (void)rnn_setCurrentTabIndex:(NSUInteger)currentTabIndex {
- [self setSelectedIndex:currentTabIndex];
- }
-
- - (void)rnn_setCurrentTabID:(NSString *)currentTabId {
- [(RNNTabBarController*)self setSelectedIndexByComponentID:currentTabId];
- }
-
- - (void)rnn_setTabBarTestID:(NSString *)testID {
- self.tabBar.accessibilityIdentifier = testID;
- }
-
- - (void)rnn_setTabBarBackgroundColor:(UIColor *)backgroundColor {
- self.tabBar.barTintColor = backgroundColor;
- }
-
- - (void)rnn_setTabBarStyle:(UIBarStyle)barStyle {
- self.tabBar.barStyle = barStyle;
- }
-
- - (void)rnn_setTabBarTranslucent:(BOOL)translucent {
- self.tabBar.translucent = translucent;
- }
-
- - (void)rnn_setTabBarHideShadow:(BOOL)hideShadow {
- self.tabBar.clipsToBounds = hideShadow;
- }
-
- - (void)rnn_setTabBarVisible:(BOOL)visible animated:(BOOL)animated {
- const CGRect tabBarFrame = self.tabBar.frame;
- const CGRect tabBarVisibleFrame = CGRectMake(tabBarFrame.origin.x,
- self.view.frame.size.height - tabBarFrame.size.height,
- tabBarFrame.size.width,
- tabBarFrame.size.height);
- const CGRect tabBarHiddenFrame = CGRectMake(tabBarFrame.origin.x,
- self.view.frame.size.height,
- tabBarFrame.size.width,
- tabBarFrame.size.height);
- if (!animated) {
- self.tabBar.hidden = !visible;
- self.tabBar.frame = visible ? tabBarVisibleFrame : tabBarHiddenFrame;
- return;
- }
- static const CGFloat animationDuration = 0.15;
-
- if (visible) {
- self.tabBar.hidden = NO;
- [UIView animateWithDuration: animationDuration
- delay: 0
- options: UIViewAnimationOptionCurveEaseOut
- animations:^()
- {
- self.tabBar.frame = tabBarVisibleFrame;
- }
- completion:^(BOOL finished)
- {}];
- } else {
- [UIView animateWithDuration: animationDuration
- delay: 0
- options: UIViewAnimationOptionCurveEaseIn
- animations:^()
- {
- self.tabBar.frame = tabBarHiddenFrame;
- }
- completion:^(BOOL finished)
- {
- self.tabBar.hidden = YES;
- }];
- }
- }
-
- - (void)rnn_forEachTab:(void (^)(UIView *, UIViewController * tabViewController, int tabIndex))performOnTab {
- int tabIndex = 0;
- for (UIView * tab in self.tabBar.subviews) {
- if ([NSStringFromClass([tab class]) isEqualToString:@"UITabBarButton"]) {
- performOnTab(tab, [self childViewControllers][(NSUInteger) tabIndex], tabIndex);
- tabIndex++;
- }
- }
- }
-
- @end
|