【问题标题】:UINavigationController push viewcontroller with hidden navigationbarUINavigationController 推送带有隐藏导航栏的视图控制器
【发布时间】:2014-03-03 16:12:23
【问题描述】:

我有一个UINavigationController,如果用户滚动,它的navigationBar 会隐藏(使用UIScrollViewDelegate 完成,而不是平移手势)。

但是当我将一个新的viewController 压入堆栈时,新控制器视图的原点 y 位于 64 像素,而不是旧 topViewController 的 y 所在位置(即 21 像素)。

如何进行推送,以使新控制器出现在与旧控制器相同的位置?

唯一更新视图框架成功的地方是viewDidAppear,但那已经晚了,因为用户可以在一秒钟内看到顶部的黑色空间。

更新:

似乎必须在viewWillAppearviewDidAppear 之间完成,但我找不到合理的方法来做到这一点。

试图改变UINavigationController 的视图(目前我只是移动它是navigationBar),但这会弄乱布局。

再次更新:

更多信息,因为答案和 cmets 都没有帮助。导航控制器是从情节提要中实例化的。这是一个自定义的UINavigationController,它在topViewControllerscrollView 滚动上隐藏了navigationBar(没有其他内容被覆盖)。

第一个topViewController(从它开始推送)是一个UIViewController,有两个容器视图(一个如果已登录,另一个如果未登录)。第二个topViewController(被压入堆栈的那个)是一个带有全屏UIWebViewUIViewController

一切都来自故事板。对于每个viewController,所有Extended Edges 复选框都处于关闭状态,并且所有navigationBars 都是不透明的。 AutoLayout 无处不在,而且(我认为设置正确)。

【问题讨论】:

  • 检查您的新 ViewController 和您从中推送的 ViewController 是否具有相同的 navigationBar 属性。 navigationBar.translucentnavigationBar.opaque 这些属性改变了 ViewController 视图的 originY。
  • 谢谢,但它们都是不透明的。
  • 在我的应用程序中,我所做的是使用bool 属性来访问在推送新VC 时导航栏是否隐藏在viewController 中。在 viewWillAppear 中,我检查了 navBar 是否被隐藏。如果是,我设置它的框架。我不确定这是否是最佳做法,但它确实有效。
  • 这是我想要做的,但在viewWillAppear 中设置不起作用。当它到达viewDidAppear 时,帧又回到了原来的状态。某些东西正在改变viewWillAppearviewDidAppear 之间的框架。

标签: ios objective-c ios7 uinavigationcontroller uinavigationbar


【解决方案1】:

--已编辑--

viewWillAppearmethod 中更改您的框架

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.view setFrame:CGRectMake(0, 21, self.view.frame.size.width, self.view.frame.size.height)];
}

或者你的 newController 的 setFrame 在被推送之前。

NewController *newC = [NewController alloc] initWithNibName:@"NewController" bundle:nil];
[newC.view setFrame:CGRectMake(0, 21, self.view.frame.size.width, self.view.frame.size.height)];

[self.navigationController pushViewController:newC animated: YES];

【讨论】:

    猜你喜欢
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多