在桌面滚动时显示和隐藏导航栏,最初导航栏是隐藏的.Tableview只包含一个节标题,当我们向上滚动节标题到达顶部但是当我们向下轻微向下滚动状态栏和导航栏时会生动地显示向下拉节目标题但随着节标题向下滚动导航栏和状态栏隐藏。我想实现这种情况。我试图实现这一点,但最初隐藏导航栏并带来导航栏创建一个抽搐效果,隐藏导航栏时也是如此。请帮帮我。
答案 0 :(得分:2)
您正在描述类似于Facebook,Instagram和Chrome的解决方案,但您说导航栏应该最初隐藏。
This thread为Facebook风格的导航栏提供了几个解决方案,甚至是link to a control。它可能仍然是你想要的。
答案 1 :(得分:2)
我认为抽搐可能是由于桌面视图在滚动到顶部或底部后反弹。
在隐藏/显示条形图之前,您应该有一个阈值。
来自here的一些示例代码:
- (void)viewDidLoad
{
[super viewDidLoad];
// ...
// Register for KVO
if (_hidesBarsOnScroll)
{
[_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];
[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;
}
}
至于Google+似乎对我有用,我不认为这是一个部分标题,但是当您向下滚动时,单元格内容会从表格视图中移出到控制器的视图中。 / p>
controller > view > tableView > cell > contentView > sectionHeaderLikeView
滚动(使用委托或KVO)时变为:
controller > view > tableView > cell > contentView
> sectionHeaderLikeView
显示和隐藏栏会调整控制器的view
并保持sectionHeaderLikeView
。