添加到UINavigationController

时间:2017-07-14 05:32:31

标签: ios objective-c uiviewcontroller uinavigationcontroller

我正在玩UILayoutAnchor,它与我的ViewController完美配合。但是当我将ViewController添加到NavigationController时,我没有得到我期待的结果。这是代码:

UIButton *topContainer = [UIButton buttonWithType:UIButtonTypeCustom];
[topContainer setBackgroundColor:[UIColor redColor]];
[self.view addSubview:topContainer];
//Setup anchor
topContainer.translatesAutoresizingMaskIntoConstraints = false;
[topContainer.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor].active = true;
[topContainer.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor].active = true;
[topContainer.heightAnchor constraintEqualToConstant:40].active = true;
[topContainer.topAnchor constraintEqualToAnchor:self.topLayoutGuide.bottomAnchor constant:0].active = true;

上述代码的结果:

enter image description here

现在当我将相同的ViewController作为NavigationController的根目录(通过故事板,我也故意隐藏)时,相同的代码给出了以下结果。

enter image description here

我注意到的第一个是从灰色到黑色的背景。 viewcontroller上的交互也不再起作用了。我检查了导航控制器的检查员及其启用的用户交互"检查。并且topContainer(redbar)没有延伸到屏幕边缘。

我尝试过使用viewcontrollers readableContentGuide,但它一直延伸到边缘。请参阅以下代码以及结果。

[topContainer.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor].active = true;
[topContainer.leadingAnchor constraintEqualToAnchor:self.view.readableContentGuide.leadingAnchor].active = true;

enter image description here

我也尝试过显示NavigationController和一个干净的构建,但它仍然提供相同的结果。我哪儿搞砸了?

1 个答案:

答案 0 :(得分:0)

泰迪熊编程确实有效。问题出现在我的代码中,就是这一行。

self.view.translatesAutoresizingMaskIntoConstraints = false;

我通过评论/删除它得到了我想要的结果。我离开这里以防有人遇到它。