如何在UINavigationBar下面绘制主视图,这样当条形显示/隐藏时,视图不受影响?

时间:2013-01-21 08:36:40

标签: ios cocoa-touch uinavigationcontroller uikit uinavigationbar

情况如下:

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

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

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

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

你能给予的任何帮助都会很棒!

2 个答案:

答案 0 :(得分:0)

在动画导航栏之前尝试按照:

self.navigationController.navigationBar.alpha = 0.99f;

我没试过,但这应该有效。

答案 1 :(得分: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");
    }];
}