Ios 枚举视图';Swift中的NSLayoutConstraints?
在Objective-C中,我可以列举视图的约束,并相应地调整约束,但在Swift中,我很难找到等效的方法 以下是我在swift中应用代码的尝试:Ios 枚举视图';Swift中的NSLayoutConstraints?,ios,swift,nslayoutconstraint,Ios,Swift,Nslayoutconstraint,在Objective-C中,我可以列举视图的约束,并相应地调整约束,但在Swift中,我很难找到等效的方法 以下是我在swift中应用代码的尝试: [self.view.constraints enumerateObjectsUsingBlock:^(NSLayoutConstraint *constraint, NSUInteger idx, BOOL *stop) { if ((constraint.firstItem == view) && (cons
[self.view.constraints enumerateObjectsUsingBlock:^(NSLayoutConstraint *constraint, NSUInteger idx, BOOL *stop) {
if ((constraint.firstItem == view) && (constraint.firstAttribute == NSLayoutAttributeTop)) {
constraint.constant = -200;
}
}];
我得到一个编译器错误,在代码的第一行声明“Type'[AnyObject!'不符合协议'Sequence'
任何帮助都将不胜感激。因为constraints()
返回[AnyObject]!
这是可选的,所以您需要在使用之前展开查看.constraints()!
。所以请使用下面的代码展开它
for (index, value) in enumerate(view.constraints()) {
var constraint = value as NSLayoutConstraint
if value.firstItem? = view {
constraint.constant = -200;
}
}
另外,您不能分配firstItem
,因为它是只读属性。我认为您需要比较它。因此,请使用if value.firstItem!作为UIView==self.view
。因此,请使用`
for (index, value) in enumerate(view.constraints()!) {
var constraint = value as NSLayoutConstraint
if value.firstItem? = view {
constraint.constant = -200;
}
}
您在哪一行收到此错误?@reecon枚举(view.constraints())中(index,value)的第一行-
{
感谢您的响应,在您的代码中我收到此编译器错误“无法分配到此表达式的结果”“在if value.firstItem?=view一行中,我想您应该使用comparison`if value.firstItem!作为UIView==self.view`
for (index, value) in enumerate(view.constraints()!) {
var constraint = value as NSLayoutConstraint
if value.firstItem! as UIView == self.view {
constraint.constant = -200;
}
}