一、UITableView
- 需要在自定义UITableView的时候,提出预设高度。
tableView.estimatedRowHeight = 100 - 不需要实现
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
3.在UITableViewCell中,对contentView进行约束。
/// 绑定数据
override func bindDataModel(_ model: Any!) {
super.bindDataModel(model)
YourView.bindDataModel(model)
//绑定数据后,再撑开Cell高度
contentView.mas_makeConstraints { make in
make?.top.equalTo()(0)
make?.left.equalTo()(0)
make?.right.equalTo()(0)
make?.bottom.equalTo()(0)//在iOS 14系统下的某些机型会出现高度设置了,但是为0的情况,加上这句话,可解决问题
make?.height.equalTo()(SCREEN_WIDTH*220/375)
}
}
二、UICollectionView
- 在UICollectionView的UICollectionViewFlowLayout中,预设Item大小
let layout = UICollectionViewFlowLayout.init()
layout.estimatedItemSize = .init(width: 100, height: 100)
let contentCollectionView = UICollectionView.init(frame: .init(x: 0, y: 0, width: self.frame.width, height: self.frame.height), collectionViewLayout: layout)
- 在UICollectionViewCell中重写preferredLayoutAttributesFittingAttributes
override func preferredLayoutAttributesFitting(_ layoutAttributes: override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {
let attr = super.preferredLayoutAttributesFitting(layoutAttributes)
attr.frame = .init(x: 0, y: 0, width: self.frame.width, height: 90)
return attr
}
这样就可以在UICollectionViewCell中定义自己的高度了
网友评论