如何在单元格上固定高度而不影响单元格的大小?我想出了如何调整表格单元格的大小,但是当我想放一个按钮看起来很小时,我想先在单元格上放一个固定的大小高度,然后一旦内容变大,就应该遵循resize方法。 这些是调整大小的方法。 预先谢谢你
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return 40
}
NSLayoutConstraint.activate([
textView.topAnchor.constraint(equalTo: self.topAnchor, constant: 10),
textView.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: -10),
textView.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 10),
textView.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -10)
])
NSLayoutConstraint.activate([
button.topAnchor.constraint(equalTo: textView.bottomAnchor, constant: 50),
button.bottomAnchor.constraint(equalTo: self.bottomAnchor),
button.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 20),
button.widthAnchor.constraint(equalToConstant: 20),
button.heightAnchor.constraint(equalToConstant: 10)
])
答案 0 :(得分:1)
将按钮的底部constraint
设置为单元格constraint
的底部contentView
。
autolayout
将自动管理像元高度。
答案 1 :(得分:0)
UITableView
的默认行为将自行处理。
确保没有为表视图设置任何自定义设置。第二件事是UITableViewCell
,您需要为每个UI组件指定高度-这将允许UITableView
正确调整单元格的大小。
Edit.1
如果要通过xib / storyboard创建视图控制器,则只需要对tableView执行此操作(注意,单元格是从nib加载的,并且视图控制器符合UITableViewDataSource
)
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.register(UINib(nibName: "YourCellNibName", bundle: nil), forCellReuseIdentifier: "reuseIdentifier")
}
答案 2 :(得分:0)
由于这三个限制因素,您身高出现冲突
textView.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: -10),
button.topAnchor.constraint(equalTo: textView.bottomAnchor, constant: 50),
button.bottomAnchor.constraint(equalTo: self.bottomAnchor),
您还需要将textView&按钮添加到contentView并设置约束条件
NSLayoutConstraint.activate([
textView.topAnchor.constraint(equalTo: self.contentView.topAnchor, constant: 10),
textView.leadingAnchor.constraint(equalTo:self.contentView.leadingAnchor, constant: 10),
textView.trailingAnchor.constraint(equalTo:self.contentView.trailingAnchor, constant: -10),
textView.heightAnchor.constraint(equalToConstant:50),
button.topAnchor.constraint(equalTo: self.textView.bottomAnchor, constant: 50),
button.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor),
button.leftAnchor.constraint(equalTo:self.contentView.leftAnchor, constant: 20),
button.widthAnchor.constraint(equalToConstant: 20),
button.heightAnchor.constraint(equalToConstant: 10)
])
答案 3 :(得分:0)
您可以执行以下操作。
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == 0 { // First table cell
if firstLoad {
return 200 // Fixed height
} else {
return UITableView.automaticDimension
}
}
}
另外,您可能需要通过执行以下操作重新触发heightForRowAt方法
self.tableView.beginUpdates()
self.tableView.endUpdates()
希望有帮助!
答案 4 :(得分:0)
将tableView.rowHeight = yourHeightValue
定义为viewDidLoad()