滚动tableView时最小化导航栏

时间:2015-05-05 00:21:37

标签: ios objective-c iphone uitableview

我尝试实现Instagram在滚动浏览桌面视图时使用的相同行为/功能导航栏最小化。我已经研究过这个并利用了这里找到的解决方案:

Imitate iOS 7 Facebook hide/show expanding/contracting Navigation Bar

此解决方案非常有用,但我遇到了问题。我在tableView的第0部分使用了一个节头。向上滚动时,导航栏会隐藏,但tableView不会调整其大小以使导航栏更改。当导航栏崩溃时,这会留下一个空白,如下所示:

Before scroll up

After scroll up

我在网上发现其他各种文章说这个问题与tableView的contentInset有关但我找不到更多细节。如果有人有任何关于如何解决这个问题的建议,这将是非常棒的。

3 个答案:

答案 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;显示导航

UITableViewUIScrollView的子类,表的委托也可以作为滚动视图的委托。因此,您可以将UIScrollViewDelegate中的所有方法用于您的表(在表的委托中实现它们),例如。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView