Swift如何根据它的内容调整UICollectionViewCell的大小

时间:2017-08-01 20:17:23

标签: ios swift

我有这个Swift代码

let collectionView = UICollectionView(frame: CGRect(x:0,y:0,width:0,height:0), 
collectionViewLayout: UICollectionViewFlowLayout())
collectionView.translatesAutoresizingMaskIntoConstraints = false
collectionView.register(PostCell.self, forCellWithReuseIdentifier: cellId)
collectionView.delegate = self
collectionView.dataSource = self
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
    {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! PostCell
        return cell
    }


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets
{
    return UIEdgeInsets(top: 15, left: 5, bottom: 15, right: 5)
}

我的目标是根据它的内容自动调整单元格的高度。我想实现

if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
    flowLayout.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize
}

let layoutHeight = UICollectionViewFlowLayout()
layoutHeight.estimatedItemSize = CGSize(width: 100, height: 100)
collectionView = UICollectionView(frame: CGRect(x:0,y:0,width:0,height:0), collectionViewLayout: layoutHeight)

但第一个让所有细胞都达到了50x50,第二个让它们成为100x100。这是PostCell

class PostCell: UICollectionViewCell {
    override init(frame: CGRect) {
        super.init(frame: frame)
        designCell()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    let CellprofileImage: UIImageView = {
        let v = UIImageView()
        v.layer.cornerRadius = 55
        v.layer.masksToBounds = true
        v.layer.borderWidth = 3
        v.layer.borderColor = UIColor(white: 0.5, alpha: 1).cgColor
        v.image = #imageLiteral(resourceName: "guitar")
        v.translatesAutoresizingMaskIntoConstraints = false
        return v
    }()


    func designCell(){
        addSubview(CellprofileImage)
        backgroundColor = .red
        cellConstraints()
    }
    func cellConstraints(){
        CellprofileImage.topAnchor.constraint(equalTo: self.topAnchor,constant:20).isActive = true
        CellprofileImage.leftAnchor.constraint(equalTo: self.leftAnchor,constant:20).isActive = true
        CellprofileImage.widthAnchor.constraint(equalToConstant: 310).isActive  = true
        CellprofileImage.heightAnchor.constraint(equalToConstant: 310).isActive = true
    }
}

0 个答案:

没有答案