Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to hide custom tab bar button when hidesBottomBarWhenPushed is "TRUE"

I am using the code snippet from Tito to add a custom button to my tab bar: https://github.com/tciuro/CustomTabBar

(Subclassing UITabbarController and adding a custom button using

// .. created a UIButton *button
[self.view addSubview:button];

)

This works great with my storyboard-based app except for the case of a subview within a navigation controller with the option "Hides bottom bar on push" enabled. This hides the tab bar as promised, but not the custom button. Seems like the button should be added as a subview to the tab bar itself? I tried this ugly code which did not even make the button show up:

for(UIView *view in self.view.subviews)
{
    if([view isKindOfClass:[UITabBar class]])
    {
        [view addSubview:button];
        break;
    }
}

Any ideas?

UPDATE: My solution: In my ApplicationDelegate i define the following methods, which i call whenever needed in the viewWillAppear or viewWillDisappear methods:

-(void)hideCenterButton:(BOOL)animated
{
    if(animated){

    [UIView animateWithDuration:0.3
                          delay:0.0f
                        options:UIViewAnimationCurveLinear
                     animations:^{
                         CGRect frame = self.centerButton.frame;
                         frame.origin.x = -100;
                         self.centerButton.frame = frame;
                     }
                     completion:^(BOOL finished){
                     }];
    }
}

-(void)showCenterButton:(BOOL)animated
{
    if(animated){

    [UIView animateWithDuration:0.35
                          delay:0.0f
                        options:UIViewAnimationCurveLinear
                     animations:^{
                         CGRect frame = self.centerButton.frame;
                         frame.origin.x = (self.view.superview.frame.size.width / 2) - (self.centerButton.frame.size.width / 2);
                         self.centerButton.frame = frame;
                     }
                     completion:^(BOOL finished){
                     }];
    }
}

I had to set the animation's duration to 0.35s to get a smooth effect in harmony with the tab bar.

like image 208
bjoern Avatar asked Jun 27 '12 12:06

bjoern


2 Answers

Why don't you make button your tabbar's part.

tabBarController.tabBar.addSubView(yourButton)

everything would be solve. cheers!

like image 81
kaushal.exe Avatar answered Nov 15 '22 21:11

kaushal.exe


One easy way to handle this would be to create an instance of the button in .h of your file.

UIButton *customTabButton;

When calling the hides bottom bar on push set the button property to hidden and reset it again in the other views if the bottom bar is visible.

    shareFbButton.hidden=YES;

You can check this is the viewDidLoad of all the files and put this line of code if needed to make sure you are displaying the button and hiding the button on all the pages you need.

 if(self.tabBarController.tabBar.isHidden){

 // set or reset the custom button visibility here 
}

This is one way.

like image 26
LostPuppy Avatar answered Nov 15 '22 21:11

LostPuppy