屏幕圆角

检查 iPhone / iPad 显示屏的圆角半径。

实现

UIScreen 添加一个 displayCornerRadius 属性,它读取私有的 _displayCornerRadius。 这个选择器在某种程度上是模糊的,这通常意味着它可以通过应用审核。 但是,使用风险自负!

为什么不直接硬编码这些值呢?

我不想使用型号标识符(例如,iPhone10,2)而错过国际版本,或者在新设备发布时不得不更新它。

使用屏幕分辨率也很棘手,因为多款设备共享相同的分辨率,但圆角半径不同。“显示缩放”也会对此造成影响,而且最终,根据显示分辨率来假设设备的任何信息似乎都不是一个好主意。

如何使用

iOS 设备显示屏使用连续的圆角曲线,这意味着角不是真正的圆形。在 iOS 13+ 中,你可以使用 CALayer.cornerCurve 来指定连续的圆角曲线。你可以像这样创建一个视图子类

class DisplayCornerMatchingView: UIView {
    override func layoutSubviews()
        super.layoutSubviews()
        layer.cornerCurve = .continuous
        layer.cornerRadius = window?.screen.displayCornerRadius ?? 0
    }
}

或者,也许你想从不同的圆角半径动画到屏幕上的圆角半径。无论哪种方式,请务必在视图上设置 layer.cornerCurve = .continuous

报告的值

以下是报告的具有圆角的各种设备的值

设备 值 (pts)
iPhone X, Xs, Xs Max, 11 Pro, 11 Pro Max 39.0
iPhone Xr, 11 41.5
iPhone 12 mini, 13 mini 44.0
iPhone 12, 12 Pro, 13 Pro, 14 47.33
iPhone 12 Pro Max, 13 Pro Max, 14 Plus 53.33
iPhone 14 Pro, 14 Pro Max, 15, 15 Plus, 15 Pro, 15 Pro Max, 16, 16 Plus 55.0
iPhone 16 Pro, 16 Pro Max 62.0
iPad Air / iPad Pro 11 英寸 / 12.9 英寸 18.0