为什么UIImageview不能成为完美的圈子?

时间:2018-08-30 06:01:46

标签: ios swift uiimageview

let radius = self.bounds.width / 2
self.layer.cornerRadius = radius
self.layer.masksToBounds = true

我应用了上面的代码 但这会产生一个奇怪的形状。

enter image description here

我不知道为什么以及如何解决它;;

5 个答案:

答案 0 :(得分:3)

如果宽度和高度相等,则此代码可以正常工作,将2.5更改为2

let radius = self.bounds.width / 2
self.layer.cornerRadius = radius
self.layer.masksToBounds = true

答案 1 :(得分:0)

要使UIImageView绕圈,您需要确保UIImageView的高度和宽度应该相同。

使用2除数代替2.5:

let radius = self.bounds.width / 2

答案 2 :(得分:0)

imgView.layer.borderWidth = 1
imgView.layer.masksToBounds = false
imgView.layer.borderColor = UIcolor.black.cgColor
imgView.layer.cornerRadius = self.frame.height/2
imgView.clipsToBounds = true
self.view.layoutIfNeeded()

尝试使用此代码,或者将您的代码完美化,只需将self.view.layoutIfNeeded()放入您的代码中

答案 3 :(得分:0)

如果要做出完美的圆形,则必须方形。

如果您的视图具有宽高比,则在为视图加载所有约束之后应用角半径。

为此,您可以将半径视图应用于viewDidAppear方法。 或viewDidLayoutSubviews方法。 或使用延迟应用半径。

更新

func delay(_ seconds: Double, completion: @escaping () -> ()) {
    DispatchQueue.main.asyncAfter(deadline: .now() + seconds) {
        completion()
    }
}

答案 4 :(得分:-1)

确保图像的高度和宽度相同

override func viewDidLayoutSubviews() {
    let radius = yourImageOutlet.bounds.width / 2
    yourImageOutlet.layer.cornerRadius = radius
    yourImageOutlet.layer.masksToBounds = true
}