![](/img/trans.png)
[英]Issue when percentage based layout (view equal height and width to Superview by multiplier ) for landscape mode
[英]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
}
可能您在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.