自动布局约束与dynamicvariables?

有可能有一个dynamic常数/乘数自动布局约束( NSLayoutConstraint )?

例如,这将是一个沼泽标准NSLayoutConstraint

 NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:obj1 attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:obj2 attribute:NSLayoutAttributeLeft multiplier:1 constant:0]; 

那么这里就是这个约束的一个变化,而是一个常量中的一个dynamicvariables:

 NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:obj1 attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:obj2 attribute:NSLayoutAttributeLeft multiplier:1 constant:scrollView.contentOffset.x]; 

第二个将采用scrollviewcontentOffset并将其用作常量。 但是,已经尝试过了,它只使用约束条件下存在的偏移量。

我希望它有约束更新常量,滚动时如果滚动。 这样它会继续使用最新的contentOffset

这可能吗? 谢谢。

当然是。

事实上,这就是他们的目标。 当你animation视图等…你需要能够改变约束。

直观上,可写的NSLayoutConstraint的唯一属性是constant属性。 (大声笑)

你的代码虽然不完全正确。

创build约束,您将首先为其创build一个属性…

 @property (nonatomic, strong) NSLayoutConstraint *leftConstraint; 

然后创build它…

 self.leftConstraint = [NSLayoutConstraint constraintWithItem:obj1 attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:obj2 attribute:NSLayoutAttributeLeft multiplier:1 constant:0]; 

然后编辑已经存在的约束…

 self.leftConstraint.constant = scrollView.contentOffset.x; 

然后,您需要强制视图重新布局子视图…

 [self.view layoutIfNeeded];