方案
我有一个应用程序,它使用标签栏控制器(屏幕底部)和导航控制器(屏幕顶部)UI设计。在一个视图控制器上,我有一个UITableView,其中包含用户将要扫描的内容" Swipe Up"用于滚动表格以查看内容。
需要
非常像雅虎!和Instagram应用程序,我希望能够拥有顶部导航栏和底部标签栏"缩小"并且"消失"当它感觉到用户在tableView上向上滑动时。当然,当用户再次滑动时,我希望他们再次出现。
问题
有谁知道怎么做?
答案 0 :(得分:1)
要隐藏包含UITabbar
且UITabbarController
的{{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];
}
之前删除选择器非常重要。否则,下次使用self
与barHideOnSwipeGestureRecognizer
时,您将获得有保证的崩溃。
请注意,此方法仅适用于iOS8 +。