iOS7 Facebook NavigationBar 行为

标签 ios objective-c facebook uinavigationbar

我的应用程序与 Facebook/Instagram 的 iOS7 应用程序具有或多或少相同的导航概念:

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

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

我能够使用 UIScrollView 委托(delegate)方法(scrollViewDidScroll:、scrollViewWillBeginDragging:、scrollViewDidEndDragging:) 实现 Conceal/显示 navigationBar

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

    [self.navigationController setNavigationBarHidden:]

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

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

为了解决这个问题,我在推送的 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)时,导航栏保持可见。

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

我的问题(最后 -.-):

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

The navigationBar of the 'old' ViewController stays hidden, while the pushed VC seems to have it's ? own navigationBar ?

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

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

第二个问题:有没有一种方法可以实现全局处理程序,以便在任何 viewController 中创建此行为,而不必在每个 View Controller 中实现 scrollDelegate 逻辑? 我正在考虑符合 UIScrollView Delegate 的委托(delegate)对象。

感谢您的帮助:)

最佳答案

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

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

关于iOS7 Facebook NavigationBar 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20641464/

相关文章:

iOS 应用程序编译和 MacInCloud/类似

ios - 使用通知,我可以在它发生之前检索方向更改

iOS 应用程序不要求位置权限

objective-c - 在 Xcode 中使用 Cocoa Framework 显示窗口

php - 迁移到 Facebook PHP SDK v4、开放图谱

android - Facebook android 应用权限 : ask for get user profile picture

ios - UIWebView 在 loadRequest 上调整大小

ios - UITableView 单元格内容在 iOS 9 上加载正常,但在 iOS 8 上加载不正常

ios - 圆形 ImageView iOS 8/Xcode 6

android - Facebook 帐户套件 - 在 OTP 屏幕 UI、Android 上自动插入 OTP 代码