Jos*_*ane 3 objective-c ios autolayout nslayoutconstraint
是否可以NSLayoutConstraint使用动态常量/乘数的自动布局约束()?
例如,这将是一个沼泽标准NSLayoutConstraint:
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:obj1 attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:obj2 attribute:NSLayoutAttributeLeft multiplier:1 constant:0];
Run Code Online (Sandbox Code Playgroud)
那么这里将是对约束的改变,但是常量中的动态变量:
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:obj1 attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:obj2 attribute:NSLayoutAttributeLeft multiplier:1 constant:scrollView.contentOffset.x];
Run Code Online (Sandbox Code Playgroud)
第二个将采取contentOffset的scrollview,并以此为常数.但是,尝试过这个,它只使用约束时存在的偏移量.
当滚动视图滚动时,我希望它有约束更新常量.这样它将继续使用最新的contentOffset.
这可能吗?谢谢.
当然是.
事实上,这就是它们的基础.当您为视图等设置动画时......您需要能够更改约束.
反直觉地说,唯一的属性NSLayoutConstraint是可写的constant属性.(大声笑)
但是你的代码并不完全正确.
创建约束,首先要为它创建一个属性......
@property (nonatomic, strong) NSLayoutConstraint *leftConstraint;
Run Code Online (Sandbox Code Playgroud)
然后创建它......
self.leftConstraint = [NSLayoutConstraint constraintWithItem:obj1 attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:obj2 attribute:NSLayoutAttributeLeft multiplier:1 constant:0];
Run Code Online (Sandbox Code Playgroud)
然后编辑已存在的约束...
self.leftConstraint.constant = scrollView.contentOffset.x;
Run Code Online (Sandbox Code Playgroud)
然后你需要强制视图重新传出子视图......
[self.view layoutIfNeeded];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1949 次 |
| 最近记录: |