管理 iphone8 & iphone12 swift 中的底部按钮
Manage bottom button in iphone8 & iphone12 swift
在 iPhone8 中,像矩形边缘设备,我需要一个底部按钮卡在带有尖角的底部边缘。在 iPhone12 中,比如弯曲的边缘设备,我需要一个底部按钮,在右-左-底部有一定的距离,并带有圆角半径。
如何在 Storyboard 上管理它?请查看下图以便更好地理解。
据我所知,情节提要没有直接的方法来实现这一点。如果我是你,我会
- 检查设备是否有弯曲的边缘(即设备是iPhone X或更高型号)然后
- 根据上述检查以编程方式设置按钮约束。
没有官方 API 提供检查设备是否有弯曲的边缘,但这是我的解决方案,所以如果有人知道更好的破解方法,请告诉我。
extension UIDevice {
var iPhoneXOrAboveModel: Bool {
return UIScreen.main.nativeBounds.height >= 2436
}
}
现在,您可以在您的视图控制器中使用此扩展并约束您的按钮。
if UIDevice.current.iPhoneXOrAboveModel {
// Has curved edges
NSLayoutConstraint.activate([
button.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
button.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20)
])
button.layer.cornerRadius = 12
} else {
// Has square edges
NSLayoutConstraint.activate([
button.leadingAnchor.constraint(equalTo: view.leadingAnchor),
button.trailingAnchor.constraint(equalTo: view.trailingAnchor)
])
}
- 删除宽度约束,等于 Superview 约束 与您给定的一样。
- 为按钮提供前导和尾随约束。
- 检查下图。
在 iPhone8 中,像矩形边缘设备,我需要一个底部按钮卡在带有尖角的底部边缘。在 iPhone12 中,比如弯曲的边缘设备,我需要一个底部按钮,在右-左-底部有一定的距离,并带有圆角半径。
如何在 Storyboard 上管理它?请查看下图以便更好地理解。
据我所知,情节提要没有直接的方法来实现这一点。如果我是你,我会
- 检查设备是否有弯曲的边缘(即设备是iPhone X或更高型号)然后
- 根据上述检查以编程方式设置按钮约束。
没有官方 API 提供检查设备是否有弯曲的边缘,但这是我的解决方案,所以如果有人知道更好的破解方法,请告诉我。
extension UIDevice {
var iPhoneXOrAboveModel: Bool {
return UIScreen.main.nativeBounds.height >= 2436
}
}
现在,您可以在您的视图控制器中使用此扩展并约束您的按钮。
if UIDevice.current.iPhoneXOrAboveModel {
// Has curved edges
NSLayoutConstraint.activate([
button.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
button.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20)
])
button.layer.cornerRadius = 12
} else {
// Has square edges
NSLayoutConstraint.activate([
button.leadingAnchor.constraint(equalTo: view.leadingAnchor),
button.trailingAnchor.constraint(equalTo: view.trailingAnchor)
])
}
- 删除宽度约束,等于 Superview 约束 与您给定的一样。
- 为按钮提供前导和尾随约束。
- 检查下图。