我正在使用UITableViewController
并将UICollectionView
放在表视图单元格的第二行中。问题是如何动态获取heightForRowAt。
我尝试使用return UITableViewAutomaticDimension
。但是没有用。
任何帮助都非常感谢。
viewDidLoad
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.estimatedRowHeight = self.tableView.rowHeight
self.tableView.rowHeight = UITableViewAutomaticDimension
}
UITableViewController
选项1
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return self.tableView.bounds.width + 15
}
选项2
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
目前,我对返回数进行硬编码。
UICollectionViewDataSource
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 15
}
UICollectionViewDelegate,UICollectionViewDelegateFlowLayout
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let layout = collectionViewLayout as! UICollectionViewFlowLayout
layout.minimumLineSpacing = 2.5
layout.minimumInteritemSpacing = 2.5
itemWidth = (collectionView.bounds.width - 5.0) / 3.0
return CGSize(width: itemWidth, height: itemWidth)
}
这是使用
return self.tableView.bounds.width + 15
的UI图像:这是使用
return UITableViewAutomaticDimension
的UI图像:这是Constraints的图像:
最佳答案
在您的viewDidLoad()中尝试添加以下内容:
override func viewDidLoad() {
super.viewDidLoad()
yourTableView.estimatedRowHeight = 70 // this is your storyboard default cell height
yourtableView.rowHeight = UITableViewAutomaticDimension //Automatic dimensions
}
然后尝试-
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
关于ios - 如何基于numberOfItemsInSection的数量设置heightForRowAt?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43486144/