Jim*_*Lee 2 uitableview ios swift
我有一个关于 的问题UITableView。
我想让 tableView 高度根据我的单元格内容高度。
所以,我成功地使用了以下代码。
DispatchQueue.main.async {
var frame = self.tableView.frame
frame.size.height = self.tableView.contentSize.height
self.tableView.frame = frame
}
Run Code Online (Sandbox Code Playgroud)
但是当我有很多数据要显示时,我的内容就会超出屏幕。
并且tableView也超出了屏幕。
有任何想法来设置它的约束并且不要让它超出屏幕。
我想在tableView底部布局和superView底部布局之间设置15。
我使用 SnapKit 来设置自动布局。
//I want to set this one is the biggest frame size. Other contents I can scroll the tableView to show the data.
tableView.snp.makeConstraints { (make) in
make.top.equalTo(self.topLayoutGuide.snp.bottom)
make.left.equalTo(10)
make.right.equalTo(-10)
make.bottom.equalTo(-15)
}
Run Code Online (Sandbox Code Playgroud)
您可以创建一个自定义UITableView:
class AutomaticHeightTableView: UITableView {
override var contentSize: CGSize {
didSet {
self.invalidateIntrinsicContentSize()
}
}
override var intrinsicContentSize: CGSize {
self.layoutIfNeeded()
return CGSize(width: UIViewNoIntrinsicMetric, height: contentSize.height + 20)
}
}
Run Code Online (Sandbox Code Playgroud)
然后将您的UITableView班级设置为AutomaticHeightTableView.
这个解决方案的灵感来自于 stackoverflow 上找到的答案。
| 归档时间: |
|
| 查看次数: |
6020 次 |
| 最近记录: |