Add initial iPhone 14 support

This commit is contained in:
Ilya Laktyushin
2022-09-13 14:06:05 +03:00
parent 5c6922ea8f
commit 5433c685a1
7 changed files with 52 additions and 19 deletions

View File

@@ -20,6 +20,8 @@ public enum DeviceMetrics: CaseIterable, Equatable {
case iPhone13
case iPhone13Pro
case iPhone13ProMax
case iPhone14Pro
case iPhone14ProMax
case iPad
case iPadMini
case iPad102Inch
@@ -46,6 +48,8 @@ public enum DeviceMetrics: CaseIterable, Equatable {
.iPhone13,
.iPhone13Pro,
.iPhone13ProMax,
.iPhone14Pro,
.iPhone14ProMax,
.iPad,
.iPadMini,
.iPad102Inch,
@@ -129,6 +133,10 @@ public enum DeviceMetrics: CaseIterable, Equatable {
return CGSize(width: 390.0, height: 844.0)
case .iPhone13ProMax:
return CGSize(width: 428.0, height: 926.0)
case .iPhone14Pro:
return CGSize(width: 393.0, height: 852.0)
case .iPhone14ProMax:
return CGSize(width: 430.0, height: 932.0)
case .iPad:
return CGSize(width: 768.0, height: 1024.0)
case .iPadMini:
@@ -156,9 +164,9 @@ public enum DeviceMetrics: CaseIterable, Equatable {
return 41.0 + UIScreenPixel
case .iPhone12Mini:
return 44.0
case .iPhone12, .iPhone13, .iPhone13Pro:
case .iPhone12, .iPhone13, .iPhone13Pro, .iPhone14Pro:
return 47.0 + UIScreenPixel
case .iPhone12ProMax, .iPhone13ProMax:
case .iPhone12ProMax, .iPhone13ProMax, .iPhone14ProMax:
return 53.0 + UIScreenPixel
case let .unknown(_, _, onScreenNavigationHeight):
if let _ = onScreenNavigationHeight {
@@ -173,7 +181,7 @@ public enum DeviceMetrics: CaseIterable, Equatable {
func safeInsets(inLandscape: Bool) -> UIEdgeInsets {
switch self {
case .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax, .iPhone13Mini, .iPhone13, .iPhone13Pro, .iPhone13ProMax:
case .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax, .iPhone13Mini, .iPhone13, .iPhone13Pro, .iPhone13ProMax, .iPhone14Pro, .iPhone14ProMax:
return inLandscape ? UIEdgeInsets(top: 0.0, left: 44.0, bottom: 0.0, right: 44.0) : UIEdgeInsets(top: 44.0, left: 0.0, bottom: 0.0, right: 0.0)
default:
return UIEdgeInsets.zero
@@ -182,7 +190,7 @@ public enum DeviceMetrics: CaseIterable, Equatable {
public func onScreenNavigationHeight(inLandscape: Bool, systemOnScreenNavigationHeight: CGFloat?) -> CGFloat? {
switch self {
case .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax, .iPhone13Mini, .iPhone13, .iPhone13Pro, .iPhone13ProMax:
case .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax, .iPhone13Mini, .iPhone13, .iPhone13Pro, .iPhone13ProMax, .iPhone14Pro, .iPhone14ProMax:
return inLandscape ? 21.0 : 34.0
case .iPadPro3rdGen, .iPadPro11Inch:
return 21.0
@@ -214,7 +222,7 @@ public enum DeviceMetrics: CaseIterable, Equatable {
var statusBarHeight: CGFloat {
switch self {
case .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax, .iPhone13Mini, .iPhone13, .iPhone13Pro, .iPhone13ProMax:
case .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax, .iPhone13Mini, .iPhone13, .iPhone13Pro, .iPhone13ProMax, .iPhone14Pro, .iPhone14ProMax:
return 44.0
case .iPadPro11Inch, .iPadPro3rdGen, .iPadMini, .iPadMini6thGen:
return 24.0
@@ -232,7 +240,7 @@ public enum DeviceMetrics: CaseIterable, Equatable {
return 162.0
case .iPhone6, .iPhone6Plus:
return 163.0
case .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax, .iPhone13Mini, .iPhone13, .iPhone13Pro, .iPhone13ProMax:
case .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax, .iPhone13Mini, .iPhone13, .iPhone13Pro, .iPhone13ProMax, .iPhone14Pro, .iPhone14ProMax:
return 172.0
case .iPad, .iPad102Inch, .iPadPro10Inch:
return 348.0
@@ -251,9 +259,9 @@ public enum DeviceMetrics: CaseIterable, Equatable {
return 216.0
case .iPhone6Plus:
return 226.0
case .iPhoneX, .iPhone12Mini, .iPhone12, .iPhone13Mini, .iPhone13, .iPhone13Pro:
case .iPhoneX, .iPhone12Mini, .iPhone12, .iPhone13Mini, .iPhone13, .iPhone13Pro, .iPhone14Pro:
return 292.0
case .iPhoneXSMax, .iPhoneXr, .iPhone12ProMax, .iPhone13ProMax:
case .iPhoneXSMax, .iPhoneXr, .iPhone12ProMax, .iPhone13ProMax, .iPhone14ProMax:
return 302.0
case .iPad, .iPad102Inch, .iPadPro10Inch:
return 263.0
@@ -272,7 +280,7 @@ public enum DeviceMetrics: CaseIterable, Equatable {
func predictiveInputHeight(inLandscape: Bool) -> CGFloat {
if inLandscape {
switch self {
case .iPhone4, .iPhone5, .iPhone6, .iPhone6Plus, .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax, .iPhone13Mini, .iPhone13, .iPhone13Pro, .iPhone13ProMax:
case .iPhone4, .iPhone5, .iPhone6, .iPhone6Plus, .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax, .iPhone13Mini, .iPhone13, .iPhone13Pro, .iPhone13ProMax, .iPhone14Pro, .iPhone14ProMax:
return 37.0
case .iPad, .iPad102Inch, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen, .iPadMini, .iPadMini6thGen:
return 50.0
@@ -283,7 +291,7 @@ public enum DeviceMetrics: CaseIterable, Equatable {
switch self {
case .iPhone4, .iPhone5:
return 37.0
case .iPhone6, .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax, .iPhone13Mini, .iPhone13, .iPhone13Pro, .iPhone13ProMax:
case .iPhone6, .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax, .iPhone13Mini, .iPhone13, .iPhone13Pro, .iPhone13ProMax, .iPhone14Pro, .iPhone14ProMax:
return 44.0
case .iPhone6Plus:
return 45.0
@@ -303,4 +311,22 @@ public enum DeviceMetrics: CaseIterable, Equatable {
return false
}
}
public var hasDynamicIsland: Bool {
switch self {
case .iPhone14Pro, .iPhone14ProMax:
return true
default:
return false
}
}
public var maybeHasDynamicIsland: Bool {
switch self {
case .iPhone12, .iPhone12ProMax, .iPhone14Pro, .iPhone14ProMax:
return true
default:
return false
}
}
}