使用Autolayout,无法将导航栏向下移动20px

时间:2014-03-24 16:59:10

标签: ios objective-c autolayout

我有一个UITabBarController有四个标签。其中一个选项卡打开我的结果屏幕(UITableViewController)。

在显示此屏幕时,我想将UINavigationBar向下移动20px(为我在所有屏幕上显示的自定义UIStatusBar腾出空间)。

在我的所有其他屏幕上,我向viewWillAppear方法添加了一些代码,以将self.navigationController.navigationBar.frame.origin.y更改为20。

但这些都是"非root"屏幕(即带后退按钮的推入视图)。

然而,在此屏幕上,UINavigationBar必须最初可见,即使它是根视图。我使用相同的代码,但它没有移动视图。

我假设autolayout将其移回原位,所以我尝试将此代码添加到viewWillLayoutSubviews和viewDidLayoutSubviews中。但是当我这样做时,导航栏不会向下移动,直到第一次滚动tableview。

在屏幕出现之前,我需要做些什么才能强制导航栏向下移动(并保持向下)?

1 个答案:

答案 0 :(得分:0)

你在使用故事板吗?将故事板中的Y设置为20,使您的viewcontroller实现UINavigation栏,然后添加以下代码:

-(UIBarPosition)positionForBar:(id<UIBarPositioning>)bar{
        return UIBarPositionTopAttached;

}

这将告诉应用程序导航栏将被附加,它将保持在20px但是将背景一直向上扩展..所以基本上它看起来像是在y = 20。