ios - 管理iphone8和iphone12 swift中的底部按钮
问题描述
在 iPhone8 之类的矩形边缘设备中,我需要一个底部按钮卡在带有尖角的底部边缘。在 iPhone12 之类的弯曲边缘设备中,我需要一个底部按钮,在右下角有一定距离,并带有角半径。
如何在情节提要上管理它?请检查下图以获得更好的理解。
解决方案
据我所知,故事板没有直接的方法来实现这一点。如果我是你,我会
- 检查设备是否有弯曲边缘(即设备是iPhone X或更高型号)然后
- 根据上述检查以编程方式设置按钮约束。
没有提供用于检查设备是否具有弯曲边缘的官方 API,但这是我的解决方案,所以如果有人知道更好的 hack,请告诉我。
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)
])
}
推荐阅读
- ios - 如何在 Xcode 12 中添加来自插座检查器的连接
- r - 取消列出到新的数据帧但复制 ID
- bash - 有没有办法在 Bash 中存储最后一个命令输出的行?
- ruby-on-rails - 如何从 Rails Active Record 中的用户表创建数据数组?
- perl - 如何使用 Perl 编写的“三行版本的 RSA 算法”?
- c++ - Resharper C++:搜索“狗猫”时,Search-Everywhere 未检测到“CatDog”
- php - 来自数组的 PDO bindParam 仅插入最后一个值
- javascript - javascript中从一维数组到二维数组
- kotlin - 如何在 Kotlin 的 Exposed 中模拟数据库查询?
- amazon-web-services - AWS Cloudformation 错误:模板格式错误:无效的输出属性:[参考]