代码如下:
//设置滑动的判定范围 - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset { // 上滑动隐藏TabBar,上滑值越来越小,下滑动越来越大 if (self.historyY+20<targetContentOffset->y) { [self setTabBarHidden:YES]; } else if(self.historyY-20>targetContentOffset->y) { [self setTabBarHidden:NO]; } self.historyY=targetContentOffset->y; }
//隐藏显示tabbar - (void)setTabBarHidden:(BOOL)hidden { UIView *tab = self.tabBarController.view; CGRect tabRect=self.tabBarController.tabBar.frame; if ([tab.subviews count] < 2) { return; } UIView *view; if ([[tab.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]]) { view = [tab.subviews objectAtIndex:1]; } else { view = [tab.subviews objectAtIndex:0]; } if (hidden) { view.frame = tab.bounds; tabRect.origin.y=[[UIScreen mainScreen]bounds].size.height+self.tabBarController.tabBar.frame.size.height; } else { view.frame = CGRectMake(tab.bounds.origin.x, tab.bounds.origin.y, tab.bounds.size.width, tab.bounds.size.height); tabRect.origin.y=[[UIScreen mainScreen] bounds].size.height-self.tabBarController.tabBar.frame.size.height; } [UIView animateWithDuration:0.5f animations:^{ self.tabBarController.tabBar.frame=tabRect; }completion:^(BOOL finished) { }]; }