ios-根据屏幕大小调整按钮的宽度和高度

时间:2018-07-27 12:03:27

标签: ios swift size

我正在尝试根据运行按钮的设备来调整按钮的大小。与iPhone SE相比iPhone 8很小,因此按钮没有完全显示。

iphone SE simulator buttons not fully showing

我尝试使用以下代码根据屏幕大小调整按钮的大小,但未显示任何更改。

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))

我该怎么做?

2 个答案:

答案 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

enter image description here

布局系统会尽力确保遵守约束,并且按钮始终是屏幕宽度的1/3。

您可以声明一些约束条件,以便自动遵守不同的约束条件,例如确保您的按钮高度始终大于36pt,宽度始终不大于400pt,等等。只需定义适当的优先级和约束条件即可。

通过这种方式定义大小限制的优点是可以在Xib中进行检查,因为您可以快速更改设备类型和方向,并确保所有功能在运行代码之前就可以运行。

祝你好运!