即使在像 iPad 这样的大屏幕上,当此视图等于 superView 的高度和宽度时,如何使任何视图呈球形

How Can I make any View Rounded In Ball Shape Even In Big Screens Like iPad when this view equal height , width to it's superView

问题


如何使用 swift[= 使用(按钮,图像....视图)与超级视图相等的宽度和高度约束时,如何使按钮,图像,按钮...视图在大屏幕上呈圆形14=]


我试过的代码

我试过这段代码,它在像 SE 这样的小屏幕上工作正常..直到 8 :

override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
roundedObject.layer.cornerRadius = roundedObject.frame.width / 2
roundedObject.clipsToBounds = true
}

the shape of the different sizes screens

我的对象约束: screen1 screen2 screen3

可能您在 viewDidLoad 方法中执行此操作,其中帧尚未获得最终值(最初它们从实例化它们的情节提要中获取值。因此,如果在情节提要预览中大小是 f.e.300x300,在 viewDidLoad 中它也将是 300x300).
因此,要么在 viewDidLayoutSubviews 中执行此操作,要么创建一个子类并在 layoutSubviews 中执行此操作。

class RoundedButton: UIButton {
    override func layoutSubviews() {
        super.layoutSubviews()
        layer.corderRadius = bounds.width / 2
        layer.masksToBounds = true
    }

}

问题出在你的约束上

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

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