美文网首页Collection view
CollectionView中cell自适配高度

CollectionView中cell自适配高度

作者: 太平洋_cfd2 | 来源:发表于2021-12-31 14:52 被阅读0次
    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

    相关文章

      网友评论

        本文标题:CollectionView中cell自适配高度

        本文链接:https://www.haomeiwen.com/subject/pgigqrtx.html