代码之家  ›  专栏  ›  技术社区  ›  Dani iman kazemayni

图像的圆角

  •  0
  • Dani iman kazemayni  · 技术社区  · 6 年前

    我正在经历一件很奇怪的事。我有个习惯 UICollectionViewCell 有一个 UIImageView . 现在,我正在设置 cornerRadius UIImageView视图 要进行舍入,它可以在某些图像上工作,但对于其他图像,它会产生如下结果:

    enter image description here

    你可以清楚地看到图像的顶部和底部不是圆形的,我不知道是什么原因造成的。我想这和图像的宽度/高度有关,但我想不出来。

    我在用这个 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 , self.frame.width ,都会产生相同的结果。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Ahmad F    6 年前

    与此无关 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
        }
    }