繁体   English   中英

当这个视图的高度、宽度与它的 superView 相等时,即使在像 iPad 这样的大屏幕中,我如何才能使任何视图呈球形圆形

[英]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 的(按钮、图像....视图)的宽度和高度与超级视图相同的约束时,如何保持按钮、图像、按钮...视图在大屏幕上四舍五入


我试过的代码

我尝试了这段代码,它在 SE..until 8 等小屏幕上运行良好:

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

不同尺寸屏幕的形状

我的 object 约束: screen1 screen2 screen3

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

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

}

问题是你的约束

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM