UITableView:向上滑动缩小标签栏和导航栏

时间:2014-08-11 16:16:41

标签: ios uitableview uinavigationcontroller uitabbarcontroller

方案

我有一个应用程序,它使用标签栏控制器(屏幕底部)和导航控制器(屏幕顶部)UI设计。在一个视图控制器上,我有一个UITableView,其中包含用户将要扫描的内容" Swipe Up"用于滚动表格以查看内容。

需要

非常像雅虎!和Instagram应用程序,我希望能够拥有顶部导航栏和底部标签栏"缩小"并且"消失"当它感觉到用户在tableView上向上滑动时。当然,当用户再次滑动时,我希望他们再次出现。

问题

有谁知道怎么做?

1 个答案:

答案 0 :(得分:1)

要隐藏包含UITabbarUITabbarController的{​​{1}} UINavigationController的{​​{1}},请使用UITableViewController属性并为hidesBarsOnSwipe添加自定义选择器:

barHideOnSwipeGestureRecognizer

通过这种方式,可以隐藏tabbar和statusBar。还可以添加一些动画效果来隐藏/显示这些条形图。

在释放@implementation SomeTableViewController - (void)willMoveToParentViewController:(UIViewController *)parent { if (parent) { self.navigationController.hidesBarsOnSwipe = YES; [self.navigationController.barHideOnSwipeGestureRecognizer addTarget:self action:@selector(swipe:)]; } else { self.navigationController.hidesBarsOnSwipe = NO; [self.navigationController.barHideOnSwipeGestureRecognizer removeTarget:self action:@selector(swipe:)]; } } - (void)swipe:(UIPanGestureRecognizer *)recognizer { UINavigationBar *bar = self.navigationController.navigationBar; BOOL isHidden = (bar.frame.origin.y < 0); [self.tabBarController.tabBar setHidden:isHidden]; [[UIApplication sharedApplication] setStatusBarHidden:isHidden withAnimation:UIStatusBarAnimationSlide]; } 之前删除选择器非常重要。否则,下次使用selfbarHideOnSwipeGestureRecognizer时,您将获得有保证的崩溃。

请注意,此方法仅适用于iOS8 +。