UICollectionViewCell 不是圆角

Posted

技术标签:

【中文标题】UICollectionViewCell 不是圆角【英文标题】:UICollectionViewCell is not rounding corner 【发布时间】:2019-08-26 03:23:42 【问题描述】:

我试图使角落变圆,但是当我使用cornerRadius和maskToBouds时,它不起作用

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellId", for: indexPath)
        cell.contentView.layer.cornerRadius = 30
        cell.contentView.layer.masksToBounds = true
        return cell
    

单元格:

【问题讨论】:

你试过 clipsToBound = true 吗? 我已经试过了!没有成功 你试过给 imageView 赋予 clipsToBounds = true 吗?? 【参考方案1】:

试试willDisplay:forItemAt:

例如

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) 
        cell.layer.cornerRadius = 30
        cell.clipsToBounds = true
    

【讨论】:

它成功了,但它没有像预期的那样四舍五入!我的意思是,顶部仍然平坦! 设置 image.contentMode = .scaleAspectFit【参考方案2】:

不要设置cell'scontentView'scornerRadius,而是更改cell本身的cornerRadius,即

cell.layer.cornerRadius = 30
cell.clipsToBounds = true

请像上面的代码一样将cellclipsToBounds 设置为true

建议:

如果您想在collectionView 中设置每个cellcornerRadius,而不是在collectionView(_:cellForItemAt:) 方法中进行设置,而是在自定义UICollectionViewCellawakeFromNib() 方法中进行设置,即

class CustomCell: UICollectionViewCell 
    override func awakeFromNib() 
        super.awakeFromNib()
        self.layer.cornerRadius = 30
        self.clipsToBounds = true
    

这是因为,由于collectionView(_:cellForItemAt:) 方法被多次执行,在那里编写布局代码有点低效。

【讨论】:

它也有效,但顶角仍然平坦!就像这样:imgur.com/a/33vdu5k 你指的是灰色的部分吗?那是collectionView还是cell?

以上是关于UICollectionViewCell 不是圆角的主要内容,如果未能解决你的问题,请参考以下文章

向 UICollectionViewCell 添加圆角和阴影

快速在 UICollectionViewCell 中的 UIimage 上设置圆角

如何在 Collectionview 单元格中为 Uiimageview 设置圆角

UICollectionViewCell - 圆形下载图像

IOS:在其内容中围绕 uicollectionViewCell 剪辑的角落

Swift 检测 UICollectionViewCell 是不是被拖到另一个 UICollectionViewCell 之上