Ios 如何在UINavigationBar下方绘制主视图,以便在该栏显示/隐藏时,视图不受影响?

Ios 如何在UINavigationBar下方绘制主视图,以便在该栏显示/隐藏时,视图不受影响?,ios,cocoa-touch,uinavigationcontroller,uikit,uinavigationbar,Ios,Cocoa Touch,Uinavigationcontroller,Uikit,Uinavigationbar,情况如下: 我正在使用Autolayout和UINavigationController为iPadw/iOS 6制作一个应用程序。我想做的是: 使用标准推送序列从一个视图控制器切换到下一个视图控制器。 当我到达新的视图控制器时,用动画隐藏导航栏。 当导航栏隐藏时,我希望我的视图根本不会移动。事实上,我希望我的视图从一开始就被有效地画在导航栏下面,这样我就不会移动内容,也不会有黑色的栏。作为参考,这是亚马逊Kindle应用程序在你阅读一本书时发生的事情 使用当前代码,视图的内容向上移动,以填充UI

情况如下:

我正在使用Autolayout和UINavigationController为iPadw/iOS 6制作一个应用程序。我想做的是:

使用标准推送序列从一个视图控制器切换到下一个视图控制器。 当我到达新的视图控制器时,用动画隐藏导航栏。 当导航栏隐藏时,我希望我的视图根本不会移动。事实上,我希望我的视图从一开始就被有效地画在导航栏下面,这样我就不会移动内容,也不会有黑色的栏。作为参考,这是亚马逊Kindle应用程序在你阅读一本书时发生的事情

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

我已尝试强制将UIViewController视图和UINavigationController视图的框架设置为整个iPad屏幕的ViewWillDisplay方法,但没有骰子。我在Autolayout中尝试了w/约束,但也没有达到我想要达到的目的


你能给予的任何帮助都将是伟大的

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

self.navigationController.navigationBar.alpha = 0.99f;

我没有尝试过这个,但应该可以。看起来您需要在新视图中添加自定义导航栏,并设置动画使其消失

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

而是将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");
    }];
}

对不起,那没用。当导航栏隐藏时,基础视图仍在移动。在哪个函数中编写动画代码?是否可以共享一个执行动画的代码段?在ViewDid下,为希望隐藏该条的控制器显示:[self.navigationController setNavigationBarHidden:YES animated:YES];虽然我相信这可能会奏效,但我仍然很好奇,是否有一种更优雅的解决方案,通过自动布局,而不需要添加额外的UINavigationBar。