Collection view

CollectionView中cell自适配高度

2021-12-31  本文已影响0人  太平洋_cfd2
  1. collectionView的自适配高度设置
layout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize
类似tableView
  1. 重写preferredLayoutAttributesFitting方法
    /// 其中layoutAttributes.frame表示最终要显示的frame显示
    override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {
        setNeedsLayout()
        layoutIfNeeded()
        
        /// attributes.frame表示自适配出的frame信息 
        let attributes = super.preferredLayoutAttributesFitting(layoutAttributes)
        var newFrame = attributes.frame
        /// 自适配时,一般只会算出高度,所以需要写死宽度
        newFrame.size.width = kScreenWidth
        attributes.frame = newFrame
        
        return attributes
    }
  1. 搭配IGListKit的使用
    /// size必须要有值,不能设置为.zero或者UICollectionViewFlowLayout.automaticSize,否则自适配会失效
    /// IGListBindingSectionController
    func sectionController(_ sectionController: ListBindingSectionController<ListDiffable>, sizeForViewModel viewModel: Any, at index: Int) -> CGSize {
        .init(width: 1, height: 1)
    }

    /// ListSectionController
    override func sizeForItem(at index: Int) -> CGSize {
        .init(width: 1, height: 1)
    }

ps: 参考链接:https://www.wangquanwei.com/846.html

上一篇下一篇

猜你喜欢

热点阅读