- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的应用程序与 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 的推送/弹出行为?
这是我正在寻找的行为:一个干净的过渡,其中“旧”导航栏保持 Conceal 状态,并显示推送的 viewController 栏。
注意:屏幕截图是在新的“从左向右滑动返回”iOS7 手势期间截取的。
第二个问题:有没有一种方法可以实现全局处理程序,以便在任何 viewController 中创建此行为,而不必在每个 View Controller 中实现 scrollDelegate 逻辑?我正在考虑符合 UIScrollView Delegate 的委托(delegate)对象。
感谢您的帮助:)
最佳答案
长话短说:我为此构建了自己的自定义容器。它提供了在选项卡之间切换以及在每个选项卡上推送新 ViewController 的能力。有点像 UINavigationController 和 UITabBarController 的混合体。
如果您需要更详细的答案,请告诉我。
关于iOS7 Facebook NavigationBar 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20641464/
我需要管理嵌入在使用标准、浅色、模糊层的 NavigationController 中的两个 ViewController 之间的转换。应用程序这部分中的所有 ViewController 看起来都非
我有一个包含 3 个不同 NavigationController 的 Storyboard: 在第一个 NavigationController 的根 Controller 中,我在代码中添加了一个
先说说我的情况。我在我的 appDelegate 中设置了 UINavigationBar 颜色,例如: [[UINavigationBar appearance] setBarTintColor:[
这两种说法有什么区别。为了隐藏导航栏,我使用以下语句之一在 viewWillAppear 方法中隐藏导航栏,如下所示: -(void)viewWillAppear:(BOOL)animated {
目前我找不到任何方法来更改 SwiftUI 中导航栏的颜色/背景。有小费吗? 最佳答案 为了改变所有 View Controller 的导航栏颜色,你必须在 AppDelegate.swift 中设置
我可以自定义 QlPreviewController Controller 中导航栏的颜色吗? 我尝试过以下 [[UINavigationBar appearanceWhenContainedIn:
我正在开发一款带有 webview 布局的安卓游戏。我想在用户玩游戏时隐藏导航栏。我找到了一些解决方案,但是当我触摸屏幕时,导航栏出现了。 我做错了什么?这是我的无效解决方案: int mUIFla
我的导航栏上有这种奇怪的行为: 而且我不知道如何解决它。 我在 Storyboard上的设置是: 我希望条形颜色清晰,以便获得完美的模糊效果。 有任何想法吗? 感谢您的关注。 最佳答案 尝试这些设置可
我正在尝试实现一种 AlertWindow 类的东西,我正在使用 WindowsManager 的实例从服务。 View 可见且可访问。但是屏幕上 NavigationBar 上的后退/主页按钮似乎没
我想隐藏NavigationBar和stateBar以显示全屏图像,但似乎navigationBar并未完全隐藏: 代码如下: [[UIApplication sharedApplication]
我找不到关于如何使用 完成此操作的任何文档组件...基本上,当我的一个场景加载时,我希望能够传递一个 route.navBarColor到我的导航器,它将自动更改栏的背景颜色。 我尝试使用 {nav
我正在向导航栏层添加渐变,并且效果很好。当我推送另一个 View Controller 和弹出 View Controller 时,问题就来了。父 View Controller 有右边的条形按钮项目
我在 iOS 7 模拟器和设备上都遇到了一个奇怪的图形问题。 在按下 TableView 中的单元格后,我以编程方式从 Storyboard 中调用 segue: [self performSegue
我有一个 NavigationViewController,它的根是一个普通的 UIViewController。我通过以下方式以编程方式呈现 TableViewController: self.pe
我有 2 个 VC。在这两种情况下,我都将代码编写为 NavigationController 外观,但是当我从第二个 VC 返回到第一个时,我的一切都是黑色的...... 第一位风投: overri
我正在使用带有 UITableView 的普通 View Controller ,它嵌入到导航 Controller 中,导航 Controller 嵌入到标签栏 Controller 中: 标签栏
我的 Storyboard中有一个导航栏,并设置了以下约束: Horizontal Space - (-16) - View Navigation Bar Horizontal Space - (-1
我的结构如下: ContainerView --embed segue--> NavigationController --> UITableViewController A --push segue
嘿,我在 UINavigationController 中有一堆 UIViewController。通常,标题(或 NavigationItem 的标题)决定了 NavigationBar 中显示的标
Second Image 问题是当我弹出我的 Controller 时,导航栏变成黑色,这非常烦人。需要帮助! 最佳答案 当您弹出屏幕时,您会回到上一屏幕。在预览屏幕中,您必须在 viewWillAp
我是一名优秀的程序员,十分优秀!