0

情况如下:

我正在使用 Autolayout 和 UINavigationController 为带有 iOS 6 的 iPad 制作应用程序。我想做的是:

使用标准的 push segue 从一个视图控制器到下一个视图控制器。当我到达新的视图控制器时,用动画隐藏导航栏。当导航栏隐藏时,我希望我的视图根本不会改变。事实上,我希望我的视图从一开始就有效地绘制在导航栏下方,所以我没有移动或移动内容,也没有黑条。作为参考,当您阅读一本书时,Amazon Kindle 应用程序中会发生这种情况。

使用我当前的代码,我的视图内容向上移动以填充 UINavigationBar 留下的空白。

我尝试在我的 viewcontroller 的 viewWillAppear 方法中将 UIViewController 的视图和 UINavigationController 的视图的框架强制设置为整个 iPad 屏幕,但没有骰子。我已经在 Autolayout 中尝试了约束,但这也没有让我到达我想去的地方。

您能提供的任何帮助都会很棒!

4

2 回答 2

0

在为导航栏设置动画之前尝试以下操作:

self.navigationController.navigationBar.alpha = 0.99f;

我没有尝试过,但这应该可以。

于 2013-01-21T09:26:11.747 回答
0

看起来您需要在新视图中添加自定义导航栏并将其动画化以使其消失。

我认为,在不移动视图的情况下隐藏导航控制器的原始导航栏是不可能的。

而是将 UINavigationBar 添加到 xib 文件,将其绑定到 IBOutlet uiNavigationBar 并尝试以下代码

-(void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:NO];
}

- (void) viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    [UIView animateWithDuration:0.3f delay:0.0f options:UIViewAnimationOptionCurveEaseInOut animations:^{
        CGRect f = self.uiNavigationBar.frame;
        f.origin = CGPointMake(f.origin.x, f.origin.y - 44);
        self.uiNavigationBar.frame = f;
    } completion:^(BOOL finished) {
        NSLog(@"done");
    }];
}
于 2013-01-28T17:59:13.873 回答