gpt4 book ai didi

ios - 以编程方式添加具有相对约束问题的标签

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

我有一个包含一些单元格的 UITableView,我想在第一个单元格中添加多个 UILabel。这是我在 UITableViewCell 子类(在 cellForRowAt 中调用)的函数中使用的代码:

    ...
let constantTop = 16


for (index,optional) in optionals.enumerated(){
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.text = "\(optional.name)"
label.tag = 10010132
label.font = CocoFonts.semibold(size: 15)
label.textColor = CocoColors.FedericoMalagoni.textVeryDarkBlue

self.contentView.addSubview(label)
let constant:CGFloat = CGFloat(constantTop * (index + 1))

print(constant)

let horizontalConstraint = NSLayoutConstraint(item: label, attribute: NSLayoutAttribute.leading, relatedBy: NSLayoutRelation.equal, toItem: self.contentView, attribute: NSLayoutAttribute.leading, multiplier: 1, constant: 16)

let verticalConstraint = NSLayoutConstraint(item: label, attribute: NSLayoutAttribute.trailing, relatedBy: NSLayoutRelation.equal, toItem: self.contentView, attribute: NSLayoutAttribute.trailing, multiplier: 1, constant: 16)

let height = NSLayoutConstraint(item: label, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 20)


let top = NSLayoutConstraint(item: label, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: self.lblInfo, attribute: NSLayoutAttribute.bottomMargin, multiplier: 1, constant: constant)

let bottom = NSLayoutConstraint(item: label, attribute: NSLayoutAttribute.bottom, relatedBy: NSLayoutRelation.equal, toItem: self.contentView, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: constant)


NSLayoutConstraint.activate([horizontalConstraint, verticalConstraint, top, bottom, height])

}
self.contentView.setNeedsUpdateConstraints()
self.contentView.setNeedsLayout()
self.contentView.layoutIfNeeded()
...

现在,标签位于单元格的边缘,如下所示:

enter image description here

灰色分隔符分隔单元格。本质上,单元格的高度不会更新。

最佳答案

如果您可以共享 cellForRowAt 的完整实现,那就更清楚了。我遇到了单元格内容重叠的类似问题。我将自定义 View 作为 subview 添加到单元格。

发生这种情况是因为表格 View 重新使用了它的单元格。因此,一种解决方案是在添加新标签之前从单元格中删除旧标签。

for content in cell.contentView.subviews {
content.removeFromSuperview()
}

关于ios - 以编程方式添加具有相对约束问题的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55514428/

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