gpt4 book ai didi

ios - 以编程方式向 collectionViewCell 添加约束?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:34:19 24 4
gpt4 key购买 nike

我正在尝试向我的 collectionviewcells 添加约束。但是当我在它的类中使用这段代码时,我得到了一个控制台错误

class IndexD: UICollectionViewCell {

func contstraints() {
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": IndexD.self]))
}
}

我收到的错误是:

unrecognized selector sent to class

我不确定如何更改我的代码以消除任何错误。我的目标是为每个特定的 collectionviewcell 设置约束。

最佳答案

在您的 views 字典中,您为 View v0 传递了不正确的值。您应该使用 self 来引用类的当前实例,而不是 IndexD.self 来引用类本身。

将您的 View 更改为:

views: ["v0": self]

还有其他问题。您正在将生成的约束添加到 self,但需要将它们添加到 View 层次结构中的较高项。 "H:|[v0]|" 将生成涉及 selfsuperview 的约束,因此您确实需要执行 superview ?.addConstraints(....

从 iOS 8 开始,有一种更简单的方法来激活约束。您可以将它们的 isActive 属性设置为 true,它们将自动添加到正确的 View 中。如果你有多个约束要激活,那么你可以用一组约束调用 NSLayoutContraint.activate(),iOS 将激活所有约束。

如果您没有NSLayoutFormatOptions,只需传递[]。并且,由于这是该参数的默认值,您可以完全保留 options: []

考虑到所有这些,这里是您的代码的更正版本:

func contstraints() {
NSLayoutConstraint.activate(NSLayoutConstraint.constraints(withVisualFormat: "H:|[v0]|", metrics: nil, views: ["v0": self]))
}

关于ios - 以编程方式向 collectionViewCell 添加约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41779469/

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