以编程方式获取集合视图部分在集合视图协议方法之外的高度

Posted

技术标签:

【中文标题】以编程方式获取集合视图部分在集合视图协议方法之外的高度【英文标题】:Programmatically Get Height of Collection View Section Outside Collection View Protocol Methods 【发布时间】:2020-05-08 01:25:40 【问题描述】:

我有一个聊天应用程序,聊天 collectionView 是在我无权更改的 pod 文件中创建的。每个聊天消息都是 collectionView 中的一个部分。我可以通过调用 myCollectionView.numberOfSections 来确定部分(聊天消息)的数量。

我想确定collectionView中每个部分的高度。我如何在不使用 collectionView 协议方法的情况下以编程方式执行此操作。

【问题讨论】:

【参考方案1】:

你可以试试这个方法:

class ThirdPartyViewController: UIViewController  

    var collectionView: UICollectionView!



class YourViewController: UIViewController, UICollectionViewDelegateFlowLayout 

    let vc = ThirdPartyViewController()
    var collectionView: UICollectionView  return vc.collectionView 
    var originDelegate: UICollectionViewDelegateFlowLayout  return vc as! UICollectionViewDelegateFlowLayout 

    override func viewDidLoad() 
        super.viewDidLoad()

        collectionView.delegate = self
    

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize 

        //return custom value
        return CGSize(width: 100, height: 100)
    

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

        //return origin value
        return originDelegate.collectionView!(collectionView, layout: collectionViewLayout, sizeForItemAt: indexPath)
    

【讨论】:

以上是关于以编程方式获取集合视图部分在集合视图协议方法之外的高度的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式滚动集合视图

Swift - 以编程方式从集合视图中选择第一个项目

故事板视图(iphone 4/5/6)影响集合单元大小的布局(以编程方式设置)

故事板集合视图拒绝在以编程方式创建的按钮前面

以编程方式创建形状视图并在集合视图单元格上使用

以编程方式将按钮添加到集合视图单元格