具有动态高度的集合视图水平方向

Posted

技术标签:

【中文标题】具有动态高度的集合视图水平方向【英文标题】:Collection View horizontal direction with dynamic height 【发布时间】:2020-02-18 09:45:04 【问题描述】:

我有一个集合视图,其方向设置为水平并启用分页。问题是,我的收藏单元每页的高度有时会高于手机屏幕尺寸。我想要实现的是用户可以向下滚动单元格并向右滑动到下一页。

目前,我只能将集合单元格显示一整页,而无法根据内容高度向下滚动。这里有一些代码:

extension EventListDetailsVC: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout 

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
        return dataArray.count
    

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
        let cat = dataArray[indexPath.row]

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "celldetails", for: indexPath) as? EventListDetailsCVC
        cell?.imageEvent.image = UIImage(named: cat.imageEvent)
        cell?.eventTitleLabel.text = cat.titleEvent
        cell?.eventDescriptionLabel.text = cat.content

        return cell!
    

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


        return CGSize(width: self.collectionView.frame.size.width, height: self.collectionView.frame.size.height)
    

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets 
        return UIEdgeInsets.zero
     

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat 
        return 0
    

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat 
        return 0
    


应该是这样的

我尝试将我的 collectionView 嵌入到 tableView 中,但它似乎不起作用,因为我在单元格中有动态高度。

这是实现这一目标的另一种方式吗?

p/s 我刚开始学 swift,谢谢。

【问题讨论】:

尝试在集合视图的单元格中使用表格视图,您可以在表格视图标题中添加您的集合视图单元格,不要实现表格单元格和所有这些 @HussainChhatriwala 有道理,稍后再试。 【参考方案1】:

您是否尝试在每个集合视图单元格中嵌入滚动视图?

这将确保集合视图单元格高度永远不会超过手机高度,而滚动视图将在您向下滚动时显示更多内容,无论是文本或图像还是您决定嵌入滚动视图本身的任何视图.

【讨论】:

【参考方案2】:

我认为您应该尝试 UIPageViewController 与 scroll 过渡样式。它在页面之间具有原生分页。

每个页面都应该有 UIScrollView。

【讨论】:

以上是关于具有动态高度的集合视图水平方向的主要内容,如果未能解决你的问题,请参考以下文章

在水平滚动中具有不同高度到顶部的集合视图引脚单元格

如何根据其中的内容创建具有动态高度的集合视图?

具有比例宽度和文本驱动高度的动态 UILabel

嵌套集合视图单元格未在方向更改时调整大小

如何将 UICollectionView 项目的大小调整为具有集合视图高度的正方形大小?

当项目具有动态高度时,如何根据设备方向创建动态颤动网格布局