【发布时间】:2018-03-28 13:58:00
【问题描述】:
我正在尝试以编程方式创建一个表格视图单元原型(类似于下面的原型)。
设计有两个堆栈视图的单元格,
a) 一个垂直堆栈视图,包含文本标签,
b) 水平堆栈视图包含图像视图和垂直堆栈视图
我创建所需的视图,将其填充到堆栈视图中,并在 tableviewcell 的 init() 中将堆栈视图固定到表格单元格的 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()
}
在我的视图控制器中,我将 tableView rowHeight 设置为 automaticDimension 并将估计高度设置为大约。价值。当我运行代码时,我得到的只是,
图像顶部的窄水平线是我的表格视图单元格(在这种情况下我的数据计数为 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
}
【问题讨论】:
-
我在你的代码中看不到你在哪里以及如何创建标签和图像视图 - 你能添加那部分吗?
-
您没有为标签/多行文本/图像/堆栈视图指定任何最小高度。这就是为什么单元格没有得到任何高度并缩小的原因。您可以通过故事板/代码设置 >= 高度约束来解决问题。
-
如果单元格只是三个视图对象,为什么需要将它们放入堆栈?
-
@Losiowaty 添加了表格单元格的实例成员。
-
@slickdaddy 我选择 stackView 是为了减少设计所需的约束数量。
标签: ios swift uitableview