我遇到了很奇怪的事情。我有一个具有UICollectionViewCell
的自定义UIImageView
。现在,我将cornerRadius
的{{1}}设置为四舍五入,并且可以在某些图像上使用,但是对于其他图像,它会产生如下结果:
您可以清楚地看到图像的顶部和底部没有四舍五入,并且我不确定是什么原因造成的。我认为它与图像的宽度/高度有关,但我无法弄清楚。
我正在UIImageView
上使用这个很小的extension
来设置舍入的图像。
UIImageView
我尝试将extension UIImageView {
func makeRounded() {
let radius = self.bounds.height / 2.0
self.layer.cornerRadius = radius
self.layer.masksToBounds = true
self.clipsToBounds = true
}
}
更改为self.bounds.height
,没有任何变化。我尝试使用self.bounds.width
,self.frame.height
,self.frame.size.height
,它们都产生相同的结果。
答案 0 :(得分:2)
与cornerRadius
无关,您的代码(makeRounded()
)应该四舍五入。
问题与图像视图的contentMode
有关。如果您尝试向其添加背景色,则应该能够确切了解问题所在,因此,假设将backgroundColor
设置为.red
,则应该在其中看到一个红色圆圈,其中包含图像中间。
要解决此问题,您应该选择一种可以填充整个图像视图的内容模式,例如.scaleToFill
或.scaleAspectFill
:
extension UIImageView {
func makeRounded() {
let radius = self.bounds.height / 2.0
self.layer.cornerRadius = radius
self.layer.masksToBounds = true
self.clipsToBounds = true
// add this one:
self.contentMode = .scaleAspectFill
}
}