Search code examples
iosanimationuitabbaruitoolbar

How to hide tab bar when dragging like Safari app?


I want to know how to implement an animation which hiding the tab bar when dragging downward, like Safari app on iOS 7. Any information from you will be appreciated.

Similar question: Show/hide UIToolbar, "match finger movement", precisely as in for example iOS7 Safari.


Solution

  • Something like this should work. I don't know if this gives exactly the same look as the Safari app, but it's close:

    @interface ViewController ()
    @property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
    @property (nonatomic) CGRect originalFrame;
    @end
    
    @implementation ViewController
    
    - (void)viewDidAppear:(BOOL)animated {
        [super viewDidAppear:animated];
        self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, 1000);
        self.originalFrame = self.tabBarController.tabBar.frame;
    }
    
    
    -(void)scrollViewDidScroll:(UIScrollView *)scrollView {
        UITabBar *tb = self.tabBarController.tabBar;
        NSInteger yOffset = scrollView.contentOffset.y;
        if (yOffset > 0) {
            tb.frame = CGRectMake(tb.frame.origin.x, self.originalFrame.origin.y + yOffset, tb.frame.size.width, tb.frame.size.height);
        }
       if (yOffset < 1) tb.frame = self.originalFrame;
    }