Ios UIPageViewController中的UINavigationController具有垂直滚动、断开的导航栏高度

Ios UIPageViewController中的UINavigationController具有垂直滚动、断开的导航栏高度,ios,cocoa-touch,ios7,uikit,uipageviewcontroller,Ios,Cocoa Touch,Ios7,Uikit,Uipageviewcontroller,我使用UIPageViewController来显示几个控制器,第一个是UINavigationController,乍一看它看起来不错,但当您滚动到下一个时,第一个导航栏会更改高度,并将标题直接放在状态栏下。我已经搜索了堆栈溢出,但找不到问题的任何答案 简单的演示:我用一种非常黑客的方式修复了这个问题–子类化了UINavigationController,并切换了它的navigationBar的setCenter:方法(通过库切换完成): 可能有正确的方法,但我没有时间。您解决了问题吗?是/否

我使用UIPageViewController来显示几个控制器,第一个是UINavigationController,乍一看它看起来不错,但当您滚动到下一个时,第一个导航栏会更改高度,并将标题直接放在状态栏下。我已经搜索了堆栈溢出,但找不到问题的任何答案


简单的演示:

我用一种非常黑客的方式修复了这个问题–子类化了
UINavigationController
,并切换了它的
navigationBar
setCenter:
方法(通过库切换完成):


可能有正确的方法,但我没有时间。

您解决了问题吗?是/否,我停止使用导航控制器,当您在视图控制器中添加UINavigationBar作为视图时,它会工作
// In subclassed UINavigationController:

- (void) viewDidLoad
{
    [super viewDidLoad];

    // This just fixes this bug: http://stackoverflow.com/q/23471624/299063
    UINavigationBar *navigationBar = self.navigationBar;
    [navigationBar aspect_hookSelector:@selector(setCenter:) withOptions:AspectPositionInstead usingBlock:^(id<AspectInfo> aspectInfo)
    {
        NSValue *centerValue = aspectInfo.arguments[0];
        CGPoint center = [centerValue CGPointValue];
        CGPoint fixedCenter = CGPointMake(center.x, 20 + navigationBar.bounds.size.height/2);
        [[aspectInfo originalInvocation] setArgument:&fixedCenter atIndex:2];
        [[aspectInfo originalInvocation] invoke];
    }
    error:nil];
}
// In child controller of UINavigationController.
self.automaticallyAdjustsScrollViewInsets = NO;