Ios 将集合视图放入表视图后如何更改单元格高度

Ios 将集合视图放入表视图后如何更改单元格高度,ios,iphone,swift,xcode,swift4,Ios,Iphone,Swift,Xcode,Swift4,我试着在tableview单元格中放置一些水平滚动的图像,所以我使用collectionview,我将其放入单元格中,除单元格高度外,其他一切都正常工作。我已经在故事板中选择了要自定义的单元格高度,并用代码更改了单元格高度,但仍然不起作用。我是新手,我找不到问题所在,请帮帮我,谢谢大家! 您可能需要设置collectionviewcell大小,如下所示: extension HomePageTableViewController: UICollectionViewDelegateFlowLay

我试着在tableview单元格中放置一些水平滚动的图像,所以我使用collectionview,我将其放入单元格中,除单元格高度外,其他一切都正常工作。我已经在故事板中选择了要自定义的单元格高度,并用代码更改了单元格高度,但仍然不起作用。我是新手,我找不到问题所在,请帮帮我,谢谢大家!


您可能需要设置collectionviewcell大小,如下所示:

extension HomePageTableViewController: UICollectionViewDelegateFlowLayout {
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

        // Return the cell size
        let cellSize = CGSize(width: collectionView.bounds.width, height: collectionView.bounds.width * (ratioToUse))
        return cellSize
    }
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    <#code#>
}
我做过类似的事情,我使用collectionview水平滚动,但我使用每个单元格的全宽并计算aspectratio。但是,您需要根据需要修改此大小

我不得不在其他地方做一些技巧来调整collectionview本身的大小

我会先试试这个,如果你仍然有问题,贴一张它看起来像什么的图片

更新#2:

如果使用的是AutoLayout,则不需要执行此操作,但可以使用以下方法自行设置高度:

extension HomePageTableViewController: UICollectionViewDelegateFlowLayout {
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

        // Return the cell size
        let cellSize = CGSize(width: collectionView.bounds.width, height: collectionView.bounds.width * (ratioToUse))
        return cellSize
    }
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    <#code#>
}
func tableView(tableView:UITableView,heightForRowAt indexath:indexPath)->CGFloat{
}
更新#3:


我只是用这个做了一些测试。您应该在collectionview上设置一个高度约束,这样可以适当调整tableviewcell的大小。你不应该像我上面提到的那样需要“身高”。AutoLayout应该可以为您处理此问题。

尝试将UIImageView的内容模式更改为aspect fit。它可能会起作用。

TableView有一个名为
heightForRowAt:indepath的函数调用该函数并在其中设置高度。如果集合中有多个单元格,则可以使用collectionview中称为
flowLayout
的内容。代码中没有单元格,这是一个单独的tableView&collectionview collectionview你的collectionview在哪里?您是否已将其添加到BannerCell自定义tableview单元格中?您在哪里为collectionview设置了数据源和委托?@Shawn我创建了两个名为BannerTableViewCell和BannerCollectionViewCell的类,并将表视图单元格标识符设置为“BannerCell”,集合可重用视图标识符在情节提要中为“BannerCollection”,数据源和delegata已连接到tableview控制器。首先感谢您的帮助!您使用的是AutoLayout吗?通常,我使用自动布局并指定tableView.rowHeight=UITableViewAutomaticDimension/tableView.EstimateDrowEight=XXX。如果您的约束正确,tableviewcell的大小应该正确。是的,我对collectionview和imageview使用了Autolayout,也使用了该代码,但是nothing@JesseS,你能给我一个截图吗?我把图片链接放在了问题中,再次感谢你的帮助!