我在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
}
图像看起来像一个放气的足球。
填充代码是否会弄乱圆形图像视图代码?
答案 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
}