即使在像iPad这样的大屏幕上,当这个视图等于高度,宽度到它的超级视图时,我怎样才能使任何视图变成球形



问题


如何保持按钮,图像,按钮…当使用(按钮,图像....的约束时,视图在大屏幕上四舍五入使用swift

设置父视图的宽度和高度相等

我试过的代码

我尝试了这个代码块,它在像SE这样的小屏幕上工作得很好,直到8:

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

不同尺寸屏幕的形状

my object constraints:Screen1 screen2 screen3

问题是你的约束

如果像这样同时使用比例宽度和比例高度约束,你将无法得到一个正方形,因为不同的设备会有不同的高度和宽度 我的建议是只使用一个按比例的宽度或比例的高度(你想要哪个),并使用宽高比约束1:1

可能你在viewDidLoad方法中这样做,其中帧尚未获得最终值(最初它们从实例化的storyboard中获得值)。如果在storyboard预览中大小是300x300,在viewDidLoad中也会是300x300。
所以要么在viewDidLayoutSubviews中这样做,要么在layoutSubviews中创建一个子类。

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

相关内容

最新更新