gpt4 book ai didi

ios - 指向视觉格式语言 (VFL) 约束的指针?

转载 作者:行者123 更新时间:2023-11-29 12:28:15 28 4
gpt4 key购买 nike

我想知道是否有可能获得一个指向通过使用可视格式语言创建的约束的指针。

举个简单的例子,假设我已经为一个 View 创建了一个约束数组,它固定在它的 super View 的顶部、左侧和底部,但宽度为 100,我想获得一个指针到此宽度约束,以便稍后以编程方式更改它。

VFL 的内容大致如下:

UIView *insertedView = [[UIView alloc] init];
insertedView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview: insertedView];

NSDictionary *views = NSDictionaryOfVariableBindings(insertedView);
NSDictionary *metrics = @{ @"viewWidth" : @(100.0) };

NSArray *constraintsH = [NSLayoutConstraint constraintsWithVisualFormat:@"|[insertedView(viewWidth)" options:0 metrics:metrics views:views];

NSArray *constraintsV = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[insertedView]|" options:0 metrics:nil views:views];

[self.view addConstraints: constraintsH];
[self.view addConstraints: constraintsV];

在上面的例子中是否可以获取指向宽度约束100.0的NSLayoutConstraint实例?

我知道我可以用另一种方法来解决它,通过 constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant 单独创建宽度约束,但我很好奇是否有一种方法可以使用 pure VFL.

最佳答案

一种方法是使用 NSArray- objectAtIndex:- indexOfObjectPassingTest::

NSUInteger index = [constraints indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
return ((NSLayoutConstraint *)obj).firstAttribute == NSLayoutAttributeWidth;
}];

NSLayoutConstraint *widthConstraint = [constraints objectAtIndex:index];

如果您有多个宽度约束(例如,不同的优先级),您可以让 block 中的测试更具体。

关于ios - 指向视觉格式语言 (VFL) 约束的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28437716/

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