【问题标题】:iOS7 Facebook NavigationBar BehavioriOS7 Facebook 导航栏行为
【发布时间】:2013-12-17 18:01:23
【问题描述】:

My App 的导航概念与 Facebook / Instagram 的 iOS7 应用程序大致相同:

具有 5 个选项卡的 ContainerViewController,每个选项卡都有一个 NavigationController,因为它是 rootViewController。

我现在正在尝试为第一个选项卡的 navigationController 的 rootViewController 重现 Facebook 的 navigationBar 行为(-> 第一个“真正的”VC,而不仅仅是像 NavVC 这样的容器)。

我能够使用 UIScrollView 委托方法(scrollViewDidScroll:、scrollViewWillBeginDragging:、scrollViewDidEndDragging:) 实现隐藏/显示导航栏

注意:navigationBar 的 frame.origin.y 是手动偏移到顶部的。我没有使用

    [self.navigationController setNavigationBarHidden:]

到目前为止真的很顺利。但我面临 2 个我想不出解决方案的问题:

当我将新的 ViewController 推送到第一个选项卡的导航堆栈时,navigationBar 保持隐藏状态。

为了解决这个问题,我在推送的 ViewController 的 viewWillAppear: 方法中这样做:

    CGRect navBarFrame = self.navigationController.navigationBar.frame;
    navBarFrame.origin.y = 20.0;
    [UIView animateWithDuration:0.3 animations:^{
        [self.navigationController.navigationBar setFrame:navBarFrame];
    }];

此动画与 iOS 的 navigationController 推送动画正确匹配。

问题:当我导航回来(弹出推送的 VC)时,navigationBar 保持可见。

我能够通过在两个 ViewController 上创建和设置一些属性来解决这个问题,但它是一个巨大的混乱,它会变得更加 hacky,因为我必须将 3 或 4 个不同的 ViewController 类型推送到这个导航堆栈上.

我的问题(终于-.-):

如何实现类似于 Facebook 的推送/弹出行为?

这是我正在寻找的行为:一个干净的过渡,其中“旧”导航栏保持隐藏状态,并显示推送的 viewController 栏。

注意:屏幕截图是在新的“从左向右滑动返回”iOS7 手势期间拍摄的。

第二个问题:有没有办法实现一个全局处理程序,以便在任何视图控制器中创建这种行为,而不必在每个视图控制器中实现 scrollDelegate 逻辑? 我正在考虑一个符合 UIScrollView Delegate 的委托对象。

感谢您的帮助:)

【问题讨论】:

    标签: ios objective-c facebook uinavigationbar


    【解决方案1】:

    长话短说:我为此构建了自己的自定义容器。它提供了在选项卡之间切换的能力,以及在每个选项卡上推送新的 ViewController。有点像 UINavigationController 和 UITabBarController 的混合体。

    如果您需要更详细的答案,请告诉我。

    【讨论】:

      【解决方案2】:

      我编写了 UINavigationController 的自定义滑动动画过渡子类。 它的行为类似于 Facebook/Instagram。以前的控制器 navigationBar 保持可见似乎没问题。

      请查看此CCSlideNavigationTransition。希望有帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多