美文网首页
UITableView/UICollectionView的Cel

UITableView/UICollectionView的Cel

作者: 左方 | 来源:发表于2022-08-19 15:28 被阅读0次

    一、UITableView

    1. 需要在自定义UITableView的时候,提出预设高度。
      tableView.estimatedRowHeight = 100
    2. 不需要实现
    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

    1. 在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)
    
    1. 在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中定义自己的高度了

    相关文章

      网友评论

          本文标题:UITableView/UICollectionView的Cel

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