我最近切换到在我的应用中使用UITabBarController
,并且发现我无法让hidesBarsOnSwipe
使用它并没有乐趣。我只是简单地说(在视图控制器中)hidesBarsOnSwipe = true
,但现在这不起作用。如果有人能帮助我完成这项工作,那就太棒了。
谢谢!
答案 0 :(得分:3)
您可以向hideOnSwipe添加操作,如下所示
[self.navigationController.barHideOnSwipeGestureRecognizer addTarget:self action:@selector(swipeGesture:)];
在swipeGesture方法中添加您想要的代码。隐藏/取消隐藏标签栏。
答案 1 :(得分:1)
我解决了这个问题。我在UITabBarController
中嵌入了UINavigationController
,我已将其作为窗口的根视图控制器。在我只使用标签栏控制器之后,它就像一个魅力。
谢谢!
答案 2 :(得分:0)
在swift3中
self.navigationController?.barHideOnSwipeGestureRecognizer.addTarget(self, action: "swipeGestuere")
声明隐藏的变量,这有助于恢复标签栏
func swipeGestuere() {
if (hidden == true){
self.bottomTabBar.isHidden = true
hidden = false
}
else{
self.bottomTabBar.isHidden = false
hidden = true
}
}
答案 3 :(得分:-1)
我通过resizing UITabBarController
解决了这个问题,足以将标签栏移出屏幕:
- (void)setTabBarHidden:(BOOL)hidden
{
CGRect frame = self.originalViewFrame;
if (hidden)
{
frame.size.height += self.tabBar.size.height;
}
self.view.frame = frame;
}
然后你可以添加KVO你的滚动视图:
[scrollView addObserver:self
forKeyPath:@"contentOffset"
options:NSKeyValueObservingOptionOld
context:nil];
隐藏/显示滚动标签栏:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
CGPoint oldOffset = [(NSValue *)change[NSKeyValueChangeOldKey] CGPointValue];
if (!_hidesBarsOnScroll || _scrollView.contentOffset.y == oldOffset.y)
return;
// Show on scroll up
if (_barsHidden &&
scrollView.contentOffset.y < oldOffset.y &&
scrollView.contentOffset.y + scrollView.bounds.size.height < scrollView.contentSize.height) // Skip on bottom
{
[self.navigationController setNavigationBarHidden:NO
animated:YES]; // Also navigation bar!
[self.tabBarController setTabBarHidden:NO
animated:YES];
_barsHidden = NO;
}
// Hide on scroll down
if (!_barsHidden &&
scrollView.contentOffset.y > 0 && // Skip on top
scrollView.contentOffset.y > oldOffset.y)
{
[self.navigationController setNavigationBarHidden:YES
animated:YES];
[self.tabBarController setTabBarHidden:YES
animated:YES];
_barsHidden = YES;
}
}
您可以查看此实施here。