我尝试实现Instagram在滚动浏览桌面视图时使用的相同行为/功能导航栏最小化。我已经研究过这个并利用了这里找到的解决方案:
Imitate iOS 7 Facebook hide/show expanding/contracting Navigation Bar
此解决方案非常有用,但我遇到了问题。我在tableView的第0部分使用了一个节头。向上滚动时,导航栏会隐藏,但tableView不会调整其大小以使导航栏更改。当导航栏崩溃时,这会留下一个空白,如下所示:
我在网上发现其他各种文章说这个问题与tableView的contentInset有关但我找不到更多细节。如果有人有任何关于如何解决这个问题的建议,这将是非常棒的。
答案 0 :(得分:1)
我认为这就是你想要的,或者你可以把它放在tableView索引0的标题或行中,如果它是自定义导航栏,你可以只隐藏索引0处的标题行
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if(scrollView.contentOffset.y <= distance)
{
//scrollup
[navigationController setNavigationBarHidden: NO animated:YES];
}
else if(scrollView.contentOffset.y >= distance)
{
//scrolldown
[self.navigationController.navigationBar setItems:nil];
[navigationController setNavigationBarHidden: YES animated:YES];
}
}
答案 1 :(得分:1)
为什么不使用UINavigationController的新属性:hidesBarsOnSwipe
?
答案 2 :(得分:0)
您使用yourTable / scrollToRowAtIndexPath。 当转到indexPath差异第一行 - &gt;隐藏导航 当去第一行 - &gt;显示导航
UITableView
是UIScrollView
的子类,表的委托也可以作为滚动视图的委托。因此,您可以将UIScrollViewDelegate
中的所有方法用于您的表(在表的委托中实现它们),例如。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView