7

我正在尝试更改 viewDidLoad 中 iPhone 4S、5、5S 的 ImageView 的约束:

for (NSLayoutConstraint *constraint in logoImage.constraints) {
    if ([constraint.identifier isEqualToString:@"logoTopIdentifier"]) {
        constraint.constant=10;
    }
}

似乎它甚至没有在循环中迭代。有没有其他方法可以获得带有标识符的特定约束?

4

2 回答 2

4

您可以将情节提要中的约束连接到您的视图控制器类,就像连接 UI 元素一样。

只需在情节提要中找到约束,将工作区设置为拆分视图,然后将约束拖到相应的视图控制器类中即可。

有时,如果您想为位置更改设置动画,您可以更新约束,例如:

self.theConstraint?.constant = 100 
self.view.setNeedsUpdateConstraints()
UIView.animateWithDuration(0.7) { () -> Void in
    self.view.layoutIfNeeded()
}

堵塞。

这就对了。

于 2015-11-28T13:14:09.167 回答
2

这是一个KVConstraintExtensionsMaster库,您可以通过它从view基于NSLayoutAttribute. 无论该约束是添加Programmatically还是来自Interface Builder.

 [self.logoImage accessAppliedConstraintByAttribute:NSLayoutAttributeTop completion:^(NSLayoutConstraint *expectedConstraint){
        if (expectedConstraint) {
            expectedConstraint.constant = 10;

            /* for the animation */ 
            [self.logoImage  updateModifyConstraintsWithAnimation:NULL];
      }
    }];
于 2015-11-29T18:09:56.097 回答