无法在自定义表格视图单元格中使 ImageView 成为一个圆圈

Posted

技术标签:

【中文标题】无法在自定义表格视图单元格中使 ImageView 成为一个圆圈【英文标题】:Can't make ImageView a circle in a Custom Table View Cell 【发布时间】:2019-01-11 23:59:28 【问题描述】:

我正在尝试为表格视图中的每个自定义单元格显示一个圆形图像。我已经在更改它的cornerRadius,但由于某种原因,图像仍然会完全显示 - 即使 ImageView 的边框已经设置为圆形。

这是一段代码:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> CustomTableViewCell 


        let cell = tableView.dequeueReusableCell(withIdentifier: "celda", for: indexPath) as! CustomTableViewCell

        cell.imgView.layer.borderWidth = 1
        cell.imgView.layer.borderColor = UIColor.black.cgColor
        cell.imgView.layer.cornerRadius = cell.imgView.frame.height/2

        //...the rest of function
        //image is added to imgView eventually

And here is the result in the sim

我尝试将代码放在单元格文件中的 override func awakeFromNib 中,但结果相同。

欢迎任何建议:)

【问题讨论】:

IB 中的“剪辑到边界”。或代码中的cell.imgView.clipsToBounds = true 在调用cellForRowAt 时设置单元格的框架(也不是其内容的框架)。正确的解决方案是创建圆形图像,而不是对图像视图应用圆角半径。 @rmaddy 在图像视图上设置掩码没有问题。但我会在CustomTableViewCell 类的layoutSubviews 中执行此操作,捕获原始大小(并在图像视图更改大小时优雅地处理)。或者,更好的是,一个可设计的UIImageView 可设计的子类,它在自己的layoutSubviews 中圆角。但是你说得对,这种代码并不真正属于UIViewControllerDataSource 【参考方案1】:

请按以下步骤尝试此代码:

第一步:

使image view 的高度和宽度相同。在 image view 的情节提要中添加 1:1 ratio 以获得相等的高度和宽度。

第二步:

cell.imgView.layer.cornerRadius = cell.imgView.frame.height/2
cell.imgView.clipsToBounds = true

它可能对你有帮助。谢谢。

【讨论】:

以上是关于无法在自定义表格视图单元格中使 ImageView 成为一个圆圈的主要内容,如果未能解决你的问题,请参考以下文章

以swift语言在自定义表格视图单元格中更新进度视图下载

如何在自定义表格视图单元格中保存文本字段

图像的滚动视图在自定义表格视图单元格中不起作用

自定义表格单元格中的堆栈视图

图像不适合自定义表格视图单元格中的图像视图

单击由笔尖制成的自定义表格单元格中的更改图像