tableViewCell 的 ContentView 不能正确自动调整大小?
Posted
技术标签:
【中文标题】tableViewCell 的 ContentView 不能正确自动调整大小?【英文标题】:ContentView for tableViewCell not auto-resizing correctly? 【发布时间】:2018-02-16 22:34:46 【问题描述】:我在我的单元格中添加了 2 个标签并使用 snapkit 设置了这些约束,问题是我无法让单元格正确展开,它保持在默认高度:
titleLabel.snp.makeConstraints (make) -> Void in
make.top.equalTo(contentView.snp.top)
make.bottom.equalTo(descriptionLabel.snp.top)
make.left.equalTo(contentView.snp.left)
make.right.equalTo(contentView.snp.right)
descriptionLabel.snp.makeConstraints (make) -> Void in
make.top.equalTo(titleLabel.snp.bottom)
make.bottom.equalTo(contentView.snp.bottom)
make.left.equalTo(contentView.snp.left)
make.right.equalTo(contentView.snp.right)
如您所见,我映射了四个边,但是我知道这些并不暗示高度,当内容本质上是动态的并且可能是各种高度时,我如何应用高度...
标签设置如下所示:
lazy var titleLabel: UILabel =
let titleLabel = UILabel()
titleLabel.textColor = .green
titleLabel.textAlignment = .center
contentView.addSubview(titleLabel)
return titleLabel
()
lazy var descriptionLabel: UILabel =
let descriptionLabel = UILabel()
descriptionLabel.textColor = .dark
descriptionLabel.textAlignment = .center
descriptionLabel.numberOfLines = 0
contentView.addSubview(descriptionLabel)
return descriptionLabel
()
【问题讨论】:
【参考方案1】:给表格视图一个estimatedRowHeight
,并将其rowHeight
设置为UITableViewAutomaticDimension。现在单元格将自行调整大小。好吧,如果一个标签被所有四个边固定到内容视图,并且如果单元格是自定大小的,那么这就是您所要做的:标签将自动改变它的高度以适应它文本,并且单元格将自动改变大小以适应标签。
【讨论】:
可在此处下载示例项目:github.com/mattneub/Programming-ios-Book-Examples/tree/master/… 是的,那么我所做的是正确的吗?但它不起作用!单元格保持其大小 嘿,我向你展示了我的代码,它确实工作了。下载项目看看!你没有显示你的代码(我不知道表格视图是如何配置的)所以谁知道你做错了什么。【参考方案2】:首先我认为你应该在子类 UITableViewCell 类初始化方法中将子视图添加到 contentView。
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?)
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.contentView.addSubview(titleLabel)
self.contentView.addSubview(descriptionLabel)
其次,确保在您的 viewDidLoad 方法中(可能在您的 ViewController 中)添加了这两行:
tableView.estimatedRowHeight = 44.0
tableView.rowHeight = UITableView.automaticDimension
当然,您应该更改estimatedRowHeight 以满足您的需要。
还有一点值得一提 - 您可以更轻松地创建这些约束(使用 SnapKit 的强大功能):
titleLabel.snp.makeConstraints (make) -> Void in
make.top.left.right.equalTo(contentView)
descriptionLabel.snp.makeConstraints (make) -> Void in
make.top.equalTo(titleLabel.snp.bottom)
make.bottom.left.right.equalTo(contentView)
【讨论】:
以上是关于tableViewCell 的 ContentView 不能正确自动调整大小?的主要内容,如果未能解决你的问题,请参考以下文章
我无法将 TableViewCell 按钮连接到 TableViewController!如何将 TableViewCell 中的值连接到 TableViewController?
MVVMCross iOS如何在TableViewCell按钮中传递参数