如何解决如何根据其中的单元格自动设置 UITableView 的高度?
我在屏幕中间有一个 UITableView,我想根据其中的单元格数量调整 tableview 的高度,其中数据是从 API 获取的。换句话说,使 tableview 的高度为 x * height of each cell
。
我环顾四周,发现您可以根据其中的内容自动调整单元格高度,但这不是我想要的(它们的大小都相同)。
有没有办法做到这一点?
解决方法
是否只想使用 UITableView
?
您可以使用 UIStackView
来实现它。如果您需要添加滚动行为 - 这也是可能的,谷歌堆栈视图 + 滚动。
在动态高度表视图自定义类下方。
class DynamicHeightTableView: UITableView {
// By default UITableView doesn't have `intrinsicContentSize`
// Overriden in order to make it work with autolayout system
override var intrinsicContentSize: CGSize {
layoutIfNeeded()
return contentSize
}
override var contentSize: CGSize {
didSet {
invalidateIntrinsicContentSize()
}
}
override func reloadData() {
super.reloadData()
invalidateIntrinsicContentSize()
}
}
,
尝试以下操作:
- 像这样在
for i in range(1,7): 'df'+i = pd.read_csv(r'C:\Users\siddhn\Desktop\phone'+str(i)+'.csv',engine = 'python')
子类中声明一个变量。
UIViewController
- 在
private var contentSizeObservation: NSKeyValueObservation?
内或设置viewDidLoad()
时,开始观察 contentSize 的变化。
myTableView
- 不要忘记在
contentSizeObservation = myTableView.observe(\.contentSize,options: .new,changeHandler: { [weak self] (tv,_) in guard let self = self else { return } self.myTableViewHeightConstraint.constant = tv.contentSize.height })
调用中清理它 -
deinit
这种方法将确保您的 deinit {
contentSizeObservation?.invalidate()
}
的高度始终与其内容一样大。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。