Ios 子视图控制器部分显示在父视图控制器';导航栏

Ios 子视图控制器部分显示在父视图控制器';导航栏,ios,layout,containers,viewcontroller,childviewcontroller,Ios,Layout,Containers,Viewcontroller,Childviewcontroller,在ios7上运行我的应用程序时,我注意到我的子视图控制器有一个从其父视图控制器的导航栏下开始的原点,而在ios6上则不是这样 这是我在添加子视图控制器时使用的代码: - (void) viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; if (!self.selectionBarViewController) //self.selectionBarViewController is the child

在ios7上运行我的应用程序时,我注意到我的子视图控制器有一个从其父视图控制器的导航栏下开始的原点,而在ios6上则不是这样

这是我在添加子视图控制器时使用的代码:

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

    if (!self.selectionBarViewController) //self.selectionBarViewController is the child view controller
    {

        self.selectionBarViewController = [[UCIScrollSelectionBarViewController alloc] init];

        self.selectionBarViewController.view.frame = CGRectMake(0.0f,
                                                                0.0f,
                                                                self.view.frame.size.width,
                                                                44.0f);

        self.selectionBarViewController.dataSource = self;
        self.selectionBarViewController.delegate = self;

        [self addChildViewController:self.selectionBarViewController];
        [self.view addSubview:self.selectionBarViewController.view];
        [self.selectionBarViewController didMoveToParentViewController:self];

        [self.selectionBarViewController beginAppearanceTransition:YES
                                                          animated:YES];

    }

    //More set up code here

}

当我调整子视图控制器的框架时,我能够看到它,但理想情况下,我不希望用户从iOS 6或iOS 7运行应用程序时有条件的布局代码

原因很简单:导航栏半透明属性的默认值

在iOS 6.1之前,默认值为“否”,但从iOS 7开始,默认值为“是”

半透明的导航栏仅位于其俯视图控制器视图的顶部,而非半透明的导航栏会使视图控制器的视图相应调整大小


要回答您的问题,您可以手动设置导航栏。半透明=否,或者,如果您想使其保持半透明,则需要相应地调整布局。

谢谢micantox,这非常有效