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

时间:2018-03-28 17:53:54

标签: ios iphone swift xcode swift4

我试图将一些带有水平滚动的图像放在tableview单元格中,所以我使用了集合视图,我将它放入单元格中,除了单元格高度外,一切都正常。我已经在故事板中选择了单元格高度自定义,并且还使用代码更改了单元格高度,但它仍然无法正常工作。我是新手,我无法找到问题所在,请帮助我,谢谢你们! 1.I want to change the cell height 2.Stroyboard

class HomePageTableViewController: UITableViewController {

var ImageArray = [String]()

override func viewDidLoad() {

    super.viewDidLoad()

    ImageArray = ["Calendar.png","Calendar.png","Calendar.png","Calendar.png","Calendar.png"]

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return ImageArray.count

}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "BannerCell") as! BannerTableViewCell

    return cell
}

override func viewWillAppear(_ animated: Bool) {
    tableView.estimatedRowHeight = 100
    tableView.rowHeight = UITableViewAutomaticDimension
  }   
}
   extension HomePageTableViewController: UICollectionViewDelegate, 
   UICollectionViewDataSource {

func numberOfSections(in collectionView: UICollectionView) -> Int {

    return 1

}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

    return ImageArray.count

}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)
    ->  UICollectionViewCell {

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "BannerCollection", for: indexPath) as! BannerCollectionCollectionViewCell

        cell.BannerImage.image = UIImage(named: ImageArray[indexPath.row])

        return cell


     }
 }

2 个答案:

答案 0 :(得分:1)

您可能需要设置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
    }
}

我已经完成了类似的工作,我使用了集合视图水平滚动,但我使用了每个单元格的全宽并计算了aspectratio。但是,您需要根据需要修改此值。

我必须在其他地方做一些技巧来调整集合视图的大小。

我会先尝试这个,如果你还有问题,请张贴一张图片。

更新#2:

如果您使用的是AutoLayout,则不需要这样做,但您可以使用以下方法自行设置高度:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    <#code#>
}

更新#3:

我只是对此进行了一些测试。您应该在集合视图上设置一个高度约束,这应该使tableviewcell适当调整大小。你不应该需要&#34; heightForRowAt&#34;正如我上面提到的。 AutoLayout应该为您处理。

答案 1 :(得分:0)

尝试将UIImageView的内容模式更改为纵横比较。它可能会奏效。