gpt4 book ai didi

ios - 如何为自定义表格 View 单元动态设置约束?

转载 作者:行者123 更新时间:2023-12-01 21:27:53 32 4
gpt4 key购买 nike

我有一个带有以下约束的自定义表格 View 单元格,一个用于 UILabel一个用于 UIImageView :

var titleLabel = UILabel()
var imageView = UIImageView()

override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
addSubview(titleLabel)

setTitlelabelConstraints()
setImageConstraints()
}

func setTitlelabelConstraints() {
titleLabel.translatesAutoresizingMaskIntoConstraints = false
titleLabel.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
titleLabel.leadingAnchor.constraint(equalTo: imageView.trailingAnchor, constant: 20).isActive = true
titleLabel.heightAnchor.constraint(equalToConstant: 55).isActive = true
titleLabel.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -12).isActive = true
}

func setImageConstraints() {
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
imageView.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 12).isActive = true
imageView.heightAnchor.constraint(equalToConstant: 55).isActive = true
imageView.widthAnchor.constraint(equalTo: imageView.heightAnchor, multiplier: 16/9).isActive = true
}

如何有条件地将前导 anchor 设置为 0,以便在没有图像时,文本标签占据整个单元格?如果没有图像,静态约束当前会留下一个空白空间。
enter image description here

最佳答案

您可以这样做:使 ImageView 宽度约束小于或等于约束,并添加另一个具有常量 0 和优先级 700 的 ImageView 宽度约束。
但是,这并不能真正解决您的问题。毕竟,您仍然会有 ImageView 和标签之间的间距。真正的答案在于您自己的话:“静态”。不要让它们成为静态的!根据是否有图像更改约束。毕竟,您知道,对于每个单元格,是否有图像,所以这都是您配置的一部分。
约束是成熟的对象,因此当您制作 ImageView 宽度约束和标签前导约束时,请保留对它们的引用,现在您可以在没有图像时将宽度设置为 0,将间距设置为 0。
在这个截屏视频中,我所做的只是删除/添加图像并更改常量。我添加动画只是为了好玩,但你当然不会那样做。
enter image description here

关于ios - 如何为自定义表格 View 单元动态设置约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63275689/

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