管理 iphone8 & iphone12 swift 中的底部按钮

Manage bottom button in iphone8 & iphone12 swift

在 iPhone8 中,像矩形边缘设备,我需要一个底部按钮卡在带有尖角的底部边缘。在 iPhone12 中,比如弯曲的边缘设备,我需要一个底部按钮,在右-左-底部有一定的距离,并带有圆角半径。

如何在 Storyboard 上管理它?请查看下图以便更好地理解。

据我所知,情节提要没有直接的方法来实现这一点。如果我是你,我会

  1. 检查设备是否有弯曲的边缘(即设备是iPhone X或更高型号)然后
  2. 根据上述检查以编程方式设置按钮约束。

没有官方 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)
            ])
        }
  1. 删除宽度约束,等于 Superview 约束 与您给定的一样。
  2. 为按钮提供前导和尾随约束
  3. 检查下图。