无法在自定义表格视图单元格中使 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 成为一个圆圈的主要内容,如果未能解决你的问题,请参考以下文章