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's
contentView's
cornerRadius
,而是更改cell
本身的cornerRadius
,即
cell.layer.cornerRadius = 30
cell.clipsToBounds = true
请像上面的代码一样将cell
的clipsToBounds
设置为true
。
建议:
如果您想在collectionView
中设置每个cell
的cornerRadius
,而不是在collectionView(_:cellForItemAt:)
方法中进行设置,而是在自定义UICollectionViewCell
的awakeFromNib()
方法中进行设置,即
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 设置圆角
IOS:在其内容中围绕 uicollectionViewCell 剪辑的角落
Swift 检测 UICollectionViewCell 是不是被拖到另一个 UICollectionViewCell 之上