gpt4 book ai didi

ios - 自动调整 UITableViewCell 变小

转载 作者:行者123 更新时间:2023-11-28 14:54:21 27 4
gpt4 key购买 nike

我正在尝试以编程方式创建一个 TableView 单元格原型(prototype)(类似于下面的原型(prototype))。

enter image description here

设计了具有两个堆栈 View 的单元格,
a) 包含文本标签的垂直堆栈 View
b) 包含 ImageView 和垂直堆栈 View 的水平堆栈 View

我创建所需的 View ,将其填充到堆栈 View 中,然后在 tableviewcell 的 init() 中将堆栈 View 固定到表单元格的 contentView。

我从 cellForItemAtIndexPath 调用 configureCell() 来填充单元格的数据。

我的 init() 看起来像这样

override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)

textStackView = UIStackView(arrangedSubviews: [priorityNameLabel, descriptionLabel])
textStackView.axis = .vertical
textStackView.alignment = .leading
textStackView.distribution = .fill
textStackView.spacing = 5

containerStackView = UIStackView(arrangedSubviews: [priorityImageView, textStackView])
containerStackView.axis = .horizontal
containerStackView.alignment = .center
containerStackView.spacing = 5
containerStackView.distribution = .fill

contentView.addSubview(containerStackView)
containerStackView.translatesAutoresizingMaskIntoConstraints = false
pinContainerToSuperview()
}

func pinContainerToSuperview() {
containerStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor).activate()
containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor).activate()
containerStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor).activate()
containerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor).activate()
}

在我的 View Controller 中,我将 tableView rowHeight 设置为 automaticDimension 并将估计高度设置为大约。值(value)。当我运行代码时,我得到的是,

enter image description here

图像顶部的窄水平线是我的表格 View 单元格(在这种情况下我的数据计数是 3)。我无法弄清楚问题所在。有人可以指出这里出了什么问题吗?

编辑 1:

这些是我的 TableViewCell 类的实例成员

var containerStackView: UIStackView!
var textStackView: UIStackView!

var priorityImageView: UIImageView! {
let imageView = UIImageView()
imageView.contentMode = .scaleAspectFit
return imageView
}

var priorityNameLabel: UILabel! {
let label = UILabel()
return label
}

var descriptionLabel: UILabel! {
let label = UILabel()
return label
}

最佳答案

您将标签和 ImageView 作为计算属性 - 这意味着每次您访问它们时,都会创建一个新实例。这不好。这基本上意味着当您将它们设置为堆栈 View 的排列 subview 然后尝试稍后配置它们时,您将处理不同的对象。

最简单的解决方案是按照在 init 中创建堆栈 View 的方式创建标签和 ImageView 。

关于ios - 自动调整 UITableViewCell 变小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49536536/

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