- collectionView的自适配高度设置
layout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize
类似tableView
- 重写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
}
- 搭配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
网友评论