gpt4 book ai didi

ios - 具有动态变量的自动布局约束?

转载 作者:可可西里 更新时间:2023-11-01 17:16:46 25 4
gpt4 key购买 nike

是否可以使用动态常量/乘数来实现自动布局约束(NSLayoutConstraint)?

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

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

然后这里将是对该约束的更改,但常量中的动态变量:

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

第二个将采用 scrollviewcontentOffset 并将其用作常量。然而,在尝试过这个之后,它只使用在进行约束时存在的偏移量。

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

这可能吗?

最佳答案

当然可以。

事实上,这就是它们的构建目的。当您对 View 等进行动画处理时...您需要能够更改约束。

与直觉相反,NSLayoutConstraint 唯一可写的属性是 constant 属性。 (笑)

虽然你的代码不太正确。

创建约束你首先要为它创建一个属性...

@property (nonatomic, strong) NSLayoutConstraint *leftConstraint;

然后创建它...

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

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

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

然后你需要强制 View 重新布局 subview ...

[self.view layoutIfNeeded];

关于ios - 具有动态变量的自动布局约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27228279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com