我正在玩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;
上述代码的结果:
现在当我将相同的ViewController作为NavigationController的根目录(通过故事板,我也故意隐藏)时,相同的代码给出了以下结果。
我注意到的第一个是从灰色到黑色的背景。 viewcontroller上的交互也不再起作用了。我检查了导航控制器的检查员及其启用的用户交互"检查。并且topContainer(redbar)没有延伸到屏幕边缘。
我尝试过使用viewcontrollers readableContentGuide,但它一直延伸到边缘。请参阅以下代码以及结果。
[topContainer.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor].active = true;
[topContainer.leadingAnchor constraintEqualToAnchor:self.view.readableContentGuide.leadingAnchor].active = true;
我也尝试过显示NavigationController和一个干净的构建,但它仍然提供相同的结果。我哪儿搞砸了?
答案 0 :(得分:0)
泰迪熊编程确实有效。问题出现在我的代码中,就是这一行。
self.view.translatesAutoresizingMaskIntoConstraints = false;
我通过评论/删除它得到了我想要的结果。我离开这里以防有人遇到它。