当前位置: 首页 > 知识库问答 >
问题:

如何以编程方式更新UIView的恒定高度约束?

卢磊
2023-03-14

我有一个UIView,我使用Xcode Interface Builder设置约束。

现在,我需要以编程方式更新该实例的高度常量。

有一个函数类似myUIView.updateConstraint(),但我不知道如何使用它。

共有3个答案

马宜民
2023-03-14

更改高度约束和宽度约束,而不创建IBOutlet。

注意:在序列图像板或XIB文件中指定高度或宽度约束。使用此扩展获取此约束后。

可以使用此扩展获取高度和宽度约束:

extension UIView {

var heightConstraint: NSLayoutConstraint? {
    get {
        return constraints.first(where: {
            $0.firstAttribute == .height && $0.relation == .equal
        })
    }
    set { setNeedsLayout() }
}

var widthConstraint: NSLayoutConstraint? {
    get {
        return constraints.first(where: {
            $0.firstAttribute == .width && $0.relation == .equal
        })
    }
    set { setNeedsLayout() }
}

}

您可以使用:

yourView.heightConstraint?.constant = newValue 
毛德华
2023-03-14

如果您有一个具有多个约束的视图,那么无需创建多个出口的更简单的方法是:

在interface builder中,为要修改的每个约束指定一个标识符:

然后在代码中可以修改多个约束,如下所示:

for constraint in self.view.constraints {
    if constraint.identifier == "myConstraint" {
       constraint.constant = 50
    }
}
myView.layoutIfNeeded()

您可以为多个约束指定相同的标识符,从而允许您将约束分组并一次修改所有约束。

相俊迈
2023-03-14

从“Interface builder”中选择高度约束并获取其出口。因此,当您想要更改视图的高度时,可以使用以下代码。

yourHeightConstraintOutlet.constant = someValue
yourView.layoutIfNeeded()

方法updateConstraints()是UIView的一个实例方法。当您以编程方式设置约束时,它很有用。它会更新视图的约束。有关更多详细信息,请单击此处。

 类似资料:
  • 问题内容: 我有一个,我使用Xcode Interface Builder设置了约束。 现在,我需要以编程方式更新该高度常数。 有一个类似的功能,但我不知道如何使用它。 问题答案: 从“界面”构建器中选择高度约束,然后选择其高度。因此,当您想更改视图的高度时,可以使用以下代码。 方法是的实例方法。以编程方式设置约束时,这将很有帮助。它更新视图的约束。有关更多详细信息,请单击此处。

  • 我在布局中有一个UIView,以便进行一些剪切和分组,但是自动布局会在收缩时调整其大小。我想给它一个固定的高度,但唯一的选择是设置顶部和底部空间。 有没有办法设置明确的高度约束?

  • 问题内容: 我正在使用来自Android百分比支持包的PercentRelativeLayout。这就是我的布局。 我想以编程方式更改高度。我该如何使用或其他方式进行操作。 问题答案: 您要设置一个新的百分比值吗?如果是,则需要:

  • 问题内容: 我正在尝试实施一个。当我使用“自动布局”时,单元格不会更改大小,而是对齐。 现在我想将其大小更改为例如 我尝试设置 虽然没有用。 有没有办法做到这一点? 编辑 : 看来,答案只会改变我的CollectionView宽度和高度本身。约束中可能存在冲突吗?有什么想法吗? 问题答案: 使用此方法设置自定义像元高度宽度。 确保添加此协议 如果您使用的是 swift 5 或 xcode 11 及

  • 问题内容: 我的活动中有和。最初设置为我需要一个功能,例如用户单击,绑定并显示为“ Wrap_Content”。到目前为止,我已经编写了代码 我的XMl文件 Java代码 ViewAnimationUtils类 在这段代码中,我正在调用类的函数。在扩展功能中,我将布局高度设置为,但是Listview渲染高度最多只显示一项。绑定有8个项目。 如何设置高度以显示列表中的所有项目? 问题答案: 这将为您

  • 问题内容: 我想为对象设置动画,所以我声明一个约束并将其添加到视图中。然后,我在动画中更新约束的属性。为什么这段代码不移动对象? 问题答案: 为了声明动画,您不能重新定义约束并调用。您应该更改约束的,并遵循以下格式: