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

Nic*_*Roy 9 ios autolayout nslayoutconstraint

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

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

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

[self.navigationController.navigationBar addSubview:secondNavigationBar];
Run Code Online (Sandbox Code Playgroud)

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

self.secondNavigationBarTopConstraint = [NSLayoutConstraint constraintWithItem:secondNavigationBar
                                                                      attribute:NSLayoutAttributeTop
                                                                      relatedBy:NSLayoutRelationEqual
                                                                         toItem:self.navigationController.navigationBar
                                                                      attribute:NSLayoutAttributeTop
                                                                     multiplier:1.0
                                                                       constant:-secondNavigationBar.height];
Run Code Online (Sandbox Code Playgroud)

然后,

    [self.navigationController.navigationBar addConstraint: self.secondNavigationBarTopConstraint];
Run Code Online (Sandbox Code Playgroud)

告诉我

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

[self.view addConstraint: self.secondNavigationBarTopConstraint];
Run Code Online (Sandbox Code Playgroud)

告诉我

视图层次结构不是为约束准备的

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

Aus*_*tin -4

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

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

这会将 navBar 置于距离顶部 44 像素的位置,从而留出空间来插入另一个栏