gpt4 book ai didi

swift - 根据该标题内的 Collection View 动态内容显示 collectionView 的标题大小不起作用

转载 作者:行者123 更新时间:2023-11-30 11:06:12 28 4
gpt4 key购买 nike

我有一个 collectionView(1),我正在其上设置标题。该 header 位于另一个 collectionView(2) 内。现在我尝试根据 header 中 collectionView(2) 的大小在 referenceSizeForHeaderInSection 中设置 headerSize 。我基本上被困住了,不知道从这里去哪里,我尝试了一切。我能够通过以下方式获取标题高度:

collectionView.collectionViewLayout.collectionViewContentSize.height

但仅在collectionView(2)中设置公共(public)变量。尝试获取公共(public)变量在 collectionView(1) ReferenceSizeForHeaderInSection 中不起作用(仅当我使用无法获取 header 的返回值的 DispatchQueue 时)。也许我做错了什么。需要帮助,另一个方向,任何值得赞赏的事情。

func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {

let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "VideoHeader", for: indexPath)
header.removeFromSuperview()
header.backgroundColor = UIColor.white

headerAdvertCollection.collectionView.translatesAutoresizingMaskIntoConstraints = false
header.addSubview(headerAdvertCollection.collectionView)
headerAdvertCollection.collectionView.centerXAnchor.constraint(equalTo: header.centerXAnchor).isActive = true
headerAdvertCollection.collectionView.centerYAnchor.constraint(equalTo: header.centerYAnchor).isActive = true
headerAdvertCollection.collectionView.heightAnchor.constraint(equalTo: header.heightAnchor).isActive = true

headerAdvertCollection.collectionView.widthAnchor.constraint(equalTo: header.widthAnchor, constant: -10).isActive = true

headerAdvertCollection.setupCollectionView()

return header
}

//MARK: Collection View Header Height
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {

let advertisingView : CGFloat = 450
let height : CGFloat = advertisingView

return CGSize(width: collectionView.frame.width - 10, height: height)
}

最佳答案

假设您有 collectionView1 和 collectionView2,您只需执行 if 检查即可在委托(delegate)/数据源方法中访问其中之一。

例如,在referenceSizeForHeaderInSection中:

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

if collectionView == collectionView1{
let advertisingView : CGFloat = 450
let height : CGFloat = advertisingView

//supposing you want to use collectionView2
return CGSize(width: collectionView2.frame.width - 10, height: height)
}else{
// HERE YOU CAN RETURN A VALUE FOR collectionView2
}

}

NOTE: to use collectionView1 and collectionView2, you need to link the outlets

关于swift - 根据该标题内的 Collection View 动态内容显示 collectionView 的标题大小不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52693221/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com