Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 正在对不相关的视图对象调用addConstraint方法_Ios_Objective C_Nslayoutconstraint - Fatal编程技术网

Ios 正在对不相关的视图对象调用addConstraint方法

Ios 正在对不相关的视图对象调用addConstraint方法,ios,objective-c,nslayoutconstraint,Ios,Objective C,Nslayoutconstraint,我一直在网上阅读一些代码,下面是它的设置- 一个scrollContainerView作为我的视图中的子视图 scrollView作为scrollContainerView中的子视图 [self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|"options:0 metrics:nil views:viewDictionary]] 现在,按照视觉格式,scrollVi

我一直在网上阅读一些代码,下面是它的设置-

一个
scrollContainerView
作为我的
视图中的子视图

scrollView
作为
scrollContainerView
中的子视图

[self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|"options:0 metrics:nil views:viewDictionary]]
现在,按照视觉格式,
scrollView
在其superview的顶部和底部边缘垂直固定,superview是
scrollContainerView

[self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|"options:0 metrics:nil views:viewDictionary]]
QN 1-

我不明白为什么结果约束被添加到
self.view
而不是
scrollview
。当约束与要添加的约束不相关时,为什么将约束添加到self.view

QN 2-

假设我有一个名为
viewOuter
的超级视图,其子视图名为
viewInner
。那么——

[viewOuter addConstraint:[NSLayoutConstraint constraintWithItem:viewInner attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:viewOuter attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0.0]]


必须将约束添加到视图中,该视图是约束中涉及的所有视图的祖先,其中视图被视为自身的“祖先”。它们不必添加到最近的祖先,尽管这是最常见的方式

所以,对于你的第一个问题,这就是编写代码的人是如何决定这样做的。不清楚他们为什么做出这个决定

对于第二个问题,只允许使用第一种形式。第二个是无效的,因为接收者不是约束中涉及的所有视图的祖先

最后,我要说的是,在iOS 8.0或更高版本中,您只需在约束上设置
active
属性,它就会自动在相关视图中添加或删除自身。类似地,您可以执行
[NSLayoutConstraint activateConstraints:constraints]
[NSLayoutConstraint DISACTIVATECONSTRAINTS:constraints]
以批量添加或删除约束,而无需确定应向哪些视图添加或从中删除约束