我正在尝试根据运行按钮的设备来调整按钮的大小。与iPhone SE
相比iPhone 8
很小,因此按钮没有完全显示。
我尝试使用以下代码根据屏幕大小调整按钮的大小,但未显示任何更改。
roundedCornerDeliveryButton.layer.cornerRadius = 8
roundedCornerKitHomeButton.layer.cornerRadius = 8
widthMultiplier = Double(self.view.frame.size.width) / 69
heightMultiplier = Double(self.view.frame.size.height) / 321
roundedCornerDeliveryButton.frame.size.width = roundedCornerDeliveryButton.frame.width * CGFloat(widthMultiplier)
roundedCornerDeliveryButton.frame.size.height = roundedCornerDeliveryButton.frame.height * CGFloat(heightMultiplier)
roundedCornerKitHomeButton.frame.size.width = roundedCornerKitHomeButton.frame.width * CGFloat(widthMultiplier)
roundedCornerKitHomeButton.frame.size.height = roundedCornerKitHomeButton.frame.height * CGFloat(heightMultiplier)
roundedCornerDeliveryButton.frame.origin = CGPoint(x: roundedCornerDeliveryButton.frame.origin.x * CGFloat(widthMultiplier), y: roundedCornerDeliveryButton.frame.origin.y * CGFloat(heightMultiplier))
roundedCornerKitHomeButton.frame.origin = CGPoint(x: roundedCornerKitHomeButton.frame.origin.x * CGFloat(widthMultiplier), y: roundedCornerKitHomeButton.frame.origin.y * CGFloat(heightMultiplier))
我该怎么做?
答案 0 :(得分:1)
要使按钮适合其内容,请使用
button.sizeToFit()
此外,最好通过自动布局实现
self.view.addSubview(button)
button.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
button.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
button.centerYAnchor.constraint(equalTo: self.view.centerYAnchor)
])
如果需要按比例添加此约束,则可以添加
button.widthAnchor.constraint(equalTo:self.view.widthAnchor,multiplier:0.75)
答案 1 :(得分:1)
有几种方法可以做到这一点,但这取决于您首先声明按钮的方式。
如果在Storyboard或Xib文件中声明了按钮,则可能应该使用布局约束。
例如,如果您希望按钮占1/3,则首先使用视图控制器的顶视图使用“等宽”定义布局约束,然后编辑该约束并将其乘数更改为1: 3
布局系统会尽力确保遵守约束,并且按钮始终是屏幕宽度的1/3。
您可以声明一些约束条件,以便自动遵守不同的约束条件,例如确保您的按钮高度始终大于36pt,宽度始终不大于400pt,等等。只需定义适当的优先级和约束条件即可。
通过这种方式定义大小限制的优点是可以在Xib中进行检查,因为您可以快速更改设备类型和方向,并确保所有功能在运行代码之前就可以运行。
祝你好运!