我正在使用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图像:

ios - 如何基于numberOfItemsInSection的数量设置heightForRowAt?-LMLPHP

这是使用return UITableViewAutomaticDimension的UI图像:

ios - 如何基于numberOfItemsInSection的数量设置heightForRowAt?-LMLPHP

这是Constraints的图像:

ios - 如何基于numberOfItemsInSection的数量设置heightForRowAt?-LMLPHP

最佳答案

在您的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/

10-12 01:53