如何创建pinterest样式隐藏/取消隐藏导航/标签栏?

时间:2012-03-02 09:00:57

标签: iphone objective-c ios ipad uinavigationcontroller

如何创建一个隐藏/取消隐藏的导航栏,就像pinterest和许多其他应用程序正在做的那样?我知道基本的想法是使用UIScrollView委托并检测我是否向上或向下滚动并显示基于该导航栏的导航栏。如果导航栏被隐藏,我还应该调整导航控制器视图高度吗?这是如何工作的?

3 个答案:

答案 0 :(得分:26)

我有一个位于github的示例项目,它完全符合pinterest / piictu风格'隐藏UINavigationController / UITabBarController的东西'

https://github.com/tonymillion/ExpandingView

答案 1 :(得分:6)

我已经尝试了https://github.com/tonymillion/ExpandingView并遇到了很多问题。

我最终滚动自己的导航控制器以同步所有动画并使用此滚动视图代码来确定我是应该展开还是收缩。 iOS> = 5.0

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    MyCustomNavController* navController = (MyCustomNavController*)self.parentViewController;
    if( [scrollView.panGestureRecognizer translationInView:self.view].y  < 0.0f ) {
        [navController setExpanded:YES animated:YES];
    } else if ([scrollView.panGestureRecognizer translationInView:self.view].y  > 0.0f  ) {
        [navController setExpanded:NO animated:YES];
    }

}

答案 2 :(得分:0)

我可能会尝试使用滚动条作为主视图创建我自己的根控制器,并将导航控制器的视图放入其中。您不能在导航栏视图中使用滚动条,但我相信在这种情况下您不需要它。

如果这种方法不起作用,我可能会创建一个模仿导航控制器外观的控制器。