视图控制器中self.navigationController.navigationBar
的最近祖先和self.view
的子视图是什么,所以我可以将约束添加到该祖先?
self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
[self.searchBar setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:self.searchBar];
NSLayoutConstraint* cn = [NSLayoutConstraint constraintWithItem:self.searchBar
attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual
toItem:self.navigationController.navigationBar attribute:NSLayoutAttributeBottom
multiplier:1.0 constant:0];
我试过
[self.view addConstraint:cn];
[self.navigationController.view addConstraint:cn];
但两次我都收到错误,“约束是否引用了视图子树之外的内容?这是非法的。”
有人可以解释与navigationController相关的视图控制器的视图层次结构吗?
谢谢!
答案 0 :(得分:1)
视图树如下所示:
因此,navigationController.view是导航栏和视图的最近祖先。我不确定为什么那不起作用。你把代码放在哪里了?