clipsToBounds / maskToBounds 不适用于表格视图单元格中的图像视图?
Posted
技术标签:
【中文标题】clipsToBounds / maskToBounds 不适用于表格视图单元格中的图像视图?【英文标题】:clipsToBounds / masksToBounds not working for image view in table view cell? 【发布时间】:2020-07-22 13:45:37 【问题描述】:所以我做了几次,效果很好,但我不知道这次我错过了什么。问题是图像视图内的图像没有被裁剪到边界。
在模拟器中显示如下:
在表格视图单元格类中,在我的awakeFromNib()
方法中,我有以下代码:
override func awakeFromNib()
super.awakeFromNib()
profileImageView.layer.masksToBounds = true
profileImageView.clipsToBounds = true
profileImageView.layer.cornerRadius = profileImageView.frame.size.width / 2
profileImageView.layer.borderWidth = 2
profileImageView.layer.borderColor = UIColor.black.cgColor
但仍然如您在图像中看到的那样,图像视图内的图像超出了边界,而圆形边框已正确应用。
我尝试将此代码放在 tableViewCell 类的 layoutSubviews()
方法中,并且我还尝试将此cornerRadius 应用到表格视图的 cellForRowAt
方法中。
此外,我还尝试将图像视图的属性更改为 Aspect Fit 和 Scale To Fit 从情节提要。
没有任何效果,图像仍然显示在圆形边界之外!为什么?
编辑:我的故事板的屏幕截图,其中我有一个原型单元格,其中包含图像视图
【问题讨论】:
您确定要设置profileImageView
的.image
属性吗?从您的屏幕截图来看,它看起来就像您有两个图像视图。这是来自故事板单元原型吗?还是您通过代码配置单元格(添加标签/图像视图作为子视图)?
我在表格视图的 cellForRowAt 方法中设置 profileImageView 的 .image 属性。我在 storyboard 中使用了 Prototype Cell,它有一个单一的图像视图,我还附上了它的屏幕截图,请检查!
添加了DonMag截图,看我只有一个图像视图,即profileImageView,其.image设置在cellForRowAt
,cornerRadius应用在awakeFromNib()
,如前所述,我使用了几种方法但没有结果!
“占位符”图像看起来偏离中心,这就是为什么我说它似乎是另一个图像视图。您可以使用完整的单元格类和cellForRowAt
函数更新您的帖子吗? (以及任何其他影响单元格的代码?)
DonMag 非常感谢您的关注,我已经解决了这个问题。实际上我犯了一个错误,我没有设置 profileImageView 的 .image 属性,而是将其设置为 cell.imageView?.image 并且它显示为单独的图像。如果你愿意,你可以回答你的第一条评论作为答案,这样我就可以将其标记为正确:)
【参考方案1】:
根据 OP...
在cellForRowAt
你正在设置:
cell.imageView?.image
你应该在哪里设置:
cell.profileImageView.image
UITableViewCell
具有“内置”.textLabel
、.detailTextLabel
和 .imageView
元素。如果我们使用自己的标签 / imageViews / 等创建了一个自定义单元格,我们必须小心不要使用这些对象。
【讨论】:
以上是关于clipsToBounds / maskToBounds 不适用于表格视图单元格中的图像视图?的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView、分页和 clipsToBounds [重复]
clipsToBounds 在 UIStackView 中似乎没有效果