如何在圆形中设置 UIImageView Swift 5

How to Set UIImageView in circle Swift 5

此代码仅适用于固定高度和宽度。使用乘法器时,UIImageView 的圆角如何实现?

这里是圈出我的ImageView的代码。宽度和高度为 300。

class MusicViewController: UIViewController {

    @IBOutlet weak var imgAlbum: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()
        imgAlbum.layer.borderWidth = 1
        imgAlbum.layer.masksToBounds = false
        imgAlbum.layer.borderColor = UIColor.black.cgColor
        imgAlbum.layer.cornerRadius = imgAlbum.frame.height/2
        imgAlbum.clipsToBounds = true
    }
    
}

如果我将高度和宽度更改为乘数之类的。现在,高度 0.5 和宽度 0.8 的乘数。 (与 SuperView 成比例的高度和宽度)

像这样一起使用比例宽度和比例高度约束不会得到正方形,在不同的设备上它会有不同的高度和宽度

我的建议是只使用一个比例宽度或比例高度(你想要哪个)并使用宽高比约束1:1 在视图上

正如@RajaKishan 和@aiwiguna 所说,您无法获得同时具有比例高度和宽度约束的正方形图像,因为这样您就无法获得具有不同高度和宽度的圆形。

您可以设置宽度或高度与 superview 成比例并将 纵横比设置为 1:1 然后您可以更改乘数并正确获取圆.您可以检查附加图像的限制

然后在 viewDidLayoutSubviews() 中设置 cornerRadius,而不是在 viewDidLoad() 中。 (viewDidLoad() 在布局约束改变视图高度之前被调用,并且只调用一次。viewDidLayoutSubviews() 在视图的几何形状发生变化时被调用,因此您应该在那里调用任何布局逻辑。

override func viewDidLayoutSubviews()  {

    self.yourImageView.layer.cornerRadius = self.yourImageView.bounds.height/2
    self.yourImageView.clipsToBounds = true

}