以编程方式在UINavigationBar中添加布局约束

时间:2014-03-17 09:57:27

标签: ios autolayout nslayoutconstraint

我有一个UIViewController,显示带有UINavigationBar的视图。这个UINavigationBar是在UINavigationController中自动创建的。

我希望在第一个UINavigationBar的顶部显示第二个UINavigationBar,对于特定模式,从顶部开始使用翻译动画。

我已经发现,当UINavigationBar自动创建时,更容易在第一个中添加第二个UINavigationBar,只需简单:

[self.navigationController.navigationBar addSubview:secondNavigationBar];

我现在正在尝试添加“y”约束以便能够翻译secondNavigationBar:

self.secondNavigationBarTopConstraint = [NSLayoutConstraint constraintWithItem:secondNavigationBar
                                                                      attribute:NSLayoutAttributeTop
                                                                      relatedBy:NSLayoutRelationEqual
                                                                         toItem:self.navigationController.navigationBar
                                                                      attribute:NSLayoutAttributeTop
                                                                     multiplier:1.0
                                                                       constant:-secondNavigationBar.height];

然后,

    [self.navigationController.navigationBar addConstraint: self.secondNavigationBarTopConstraint];

告诉我

  

无法修改由a管理的UINavigationBar的约束   控制器

[self.view addConstraint: self.secondNavigationBarTopConstraint];

告诉我

  

未为约束

准备视图层次结构

我不熟悉自动布局约束......你的帮助会非常感激:)谢谢!

1 个答案:

答案 0 :(得分:-4)

您可以尝试手动设置框架,而不是使用约束,如下所示:

self.navigationController.navigationBar.frame = CGRectMake(0, 44, screenWidth, screenHeight)

这将使navBar从顶部44像素,允许空间插入另一个栏