gpt4 book ai didi

ios - 无法使用自动布局将简单的自调整大小 Collection View 单元格调整为标签大小

转载 作者:行者123 更新时间:2023-11-29 05:49:51 26 4
gpt4 key购买 nike

Xcode 10.2、Swift 5。

我在 .xib 文件中定义了一个 UICollectionViewCell。我将其加载到我的 UIViewController(不是 UICollectionViewController)子类中,并在 cellForItemAt 中返回它。

在我的 UICollectionViewCell (称为 TagCell)中,我这样做:

    override
func
awakeFromNib()
{
super.awakeFromNib()

self.contentView.translatesAutoresizingMaskIntoConstraints = false
self.translatesAutoresizingMaskIntoConstraints = false

self.layer.borderColor = UIColor(red: 0.354, green: 0.442, blue: 0.297, alpha: 0.74).cgColor
self.layer.borderWidth = 1.0
self.layer.cornerRadius = 4.0
}

Nib 只有我放入的顶级 UICollectionViewCell 和一个对所有四个边缘具有固定 4 像素约束的 UILabel。我在 cellForItemAt 中设置了 UILabel 的文本。但是,生成的集合是按照我在 viewDidLoad() 中设置的估计高度呈现的所有单元格:

    override
func
viewDidLoad()
{
super.viewDidLoad()

let nib = UINib(nibName: "TagCell", bundle: Bundle(for: type(of: self)))
self.collectionView.register(nib, forCellWithReuseIdentifier: "TagCell")

let layout = self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout
layout.estimatedItemSize = CGSize(width: 60.0, height: 25.0)
}

单元 Nib 文件:

Cell Nib Screenshot

这似乎是苹果和我在网上找到的其他资源告诉我要做的事情,但我一定错过了一些重要的事情。我还尝试在 UILabel 上将水平压缩阻力优先级设置为 1000,但它们不断被截断。

我也尝试添加 >= 宽度约束,但这似乎被忽略了。

在设置 self.contentView.translatesAutoresizingMaskIntoConstraints 之前,我会在调试器中收到冲突约束警告。但现在它不再提示 >= 宽度约束,甚至认为它违反了它。

最佳答案

因此,事实证明您必须在单元格的awakeFromNib()中执行以下操作:

        self.contentView.translatesAutoresizingMaskIntoConstraints = false
let fixupConsts =
[
self.contentView.leftAnchor.constraint(equalTo: self.leftAnchor),
self.contentView.rightAnchor.constraint(equalTo: self.rightAnchor),
self.contentView.topAnchor.constraint(equalTo: self.topAnchor),
self.contentView.bottomAnchor.constraint(equalTo: self.bottomAnchor)
]
NSLayoutConstraint.activate(fixupConsts)

尽管事实上WWDC 2014 Session 226非常明确地指出,您唯一需要做的就是将 estimatedCellSize 设置为非零值,这根本不够。

如果有人能提供更好的答案,我很乐意将其标记为答案。

关于ios - 无法使用自动布局将简单的自调整大小 Collection View 单元格调整为标签大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55788659/

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