gpt4 book ai didi

ios - 如何获得影响给定 subview 的自动布局约束?

转载 作者:技术小花猫 更新时间:2023-10-29 10:22:57 24 4
gpt4 key购买 nike

尽管我很喜欢自动版式这个概念,但我似乎总是被实现细节绊倒。其中之一是我真的厌倦了存储应用于给定 subview 的约束,以便稍后删除和替换它们。

例如,当我第一次添加一个 View 时,我可能会给它一个约束:

@"H:[view(==200)]|"

将其放置在屏幕的右侧,宽度为 200。如果我稍后想将其设置为 400 宽,间隙为 200 怎么办?新布局足够简单,但与旧布局直接矛盾:

@"H:[view(==200)]-(200)]|"

所以我必须保存约束数组,以便以后可以使用它们来删除所述约束。 得到 是我在某处遗漏的更简单的解决方案。不幸的是,[view constraints] 的明显解决方案没有意义,因为您没有将约束直接应用于给定 View ,而是将它们应用于它的父 View 。 (另外,它往往充满了使它自己的对象正确适合的自动布局约束——而不是你想要删除的东西只是为了调整它的位置!)而且似乎没有任何可用的 [view constraintsForSubview:] 选项.

我瞎了吗?遗漏了什么?我真的需要交出现有约束的字典以便以后修复它们吗?

最佳答案

您可以使 IBOutlets 成为约束并更改代码中的常量参数。所以,如果你想做的和你的例子一样,你可以这样做(调用宽度约束 widthCon):

self.widthCon.constant = 400;

这会将约束留在右侧 200(如果你想改变那个,你也可以为那个做一个导出)。

如果你确实想保存(或删除)某个 View 的约束,你可以使用类似这样的方法:

for (NSLayoutConstraint *con in self.view.constraints) {
if (con.firstItem == self.leftButton || con.secondItem == self.leftButton) {
[self.portraitConstraints addObject:con];
}
}

当然,您可以在 UIView 上创建一个类别,该类别将使用类似的东西来制作 viewConstraintsForView: 方法。

关于ios - 如何获得影响给定 subview 的自动布局约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18861969/

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