UICollectionView舍入了imageView

时间:2017-03-06 07:22:49

标签: swift uiimageview uicollectionview

我在UICollectionView Cell中有一个UIImageView。

我希望在uicollectionview中每列有2个单元格,所以我使用了这个代码......

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    let padding: CGFloat = 25
    let collectionCellSize = collectionView.frame.size.width - padding

  return CGSize(width: collectionCellSize/2, height: collectionCellSize/2)

}

对于图像视图,我希望它是圆形的,这段代码通常可以在其他地方使用..

self.accountImageView.layer.cornerRadius = frame.size.width/2
self.accountImageView.clipsToBounds = true

我已经尝试将它放在cellForItemAt中,没有运气

现在在CollectionView Cell Class中,我像这样添加了它

override func layoutSubviews() {
  super.layoutSubviews()

    self.accountImageView.layer.cornerRadius = frame.size.width/2
    self.accountImageView.clipsToBounds = true

}

图像看起来像一个放气的足球。

填充代码是否会弄乱圆形图像视图代码?

2 个答案:

答案 0 :(得分:4)

您需要添加self.accountImageView.layoutIfNeeded() 并确保 imageview 的高度和宽度相等

override func layoutSubviews()
{
    super.layoutSubviews()

    self.accountImageView.layoutIfNeeded()       // add this
    self.accountImageView.layer.cornerRadius = frame.size.width/2
    self.accountImageView.clipsToBounds = true

}

答案 1 :(得分:0)

如果您正在使用约束,请尝试此操作 -

override func layoutSubviews() {
 super.layoutSubviews()
 self.accountImageView.layoutIfNeeded() // Add this line

 self.accountImageView.layer.cornerRadius = frame.size.width/2
 self.accountImageView.clipsToBounds = true

}