mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
Merge branch 'master' of gitlab.com:peter-iakovlev/telegram-ios
This commit is contained in:
@@ -12,10 +12,12 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
case iPhone6Plus
|
||||
case iPhoneX
|
||||
case iPhoneXSMax
|
||||
case iPhoneXr
|
||||
case iPhone12Mini
|
||||
case iPhone12
|
||||
case iPhone12ProMax
|
||||
case iPad
|
||||
case iPad102Inch
|
||||
case iPadPro10Inch
|
||||
case iPadPro11Inch
|
||||
case iPadPro
|
||||
@@ -30,10 +32,12 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
.iPhone6Plus,
|
||||
.iPhoneX,
|
||||
.iPhoneXSMax,
|
||||
.iPhoneXr,
|
||||
.iPhone12Mini,
|
||||
.iPhone12,
|
||||
.iPhone12ProMax,
|
||||
.iPad,
|
||||
.iPad102Inch,
|
||||
.iPadPro10Inch,
|
||||
.iPadPro11Inch,
|
||||
.iPadPro,
|
||||
@@ -41,7 +45,7 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
]
|
||||
}
|
||||
|
||||
public init(screenSize: CGSize, statusBarHeight: CGFloat, onScreenNavigationHeight: CGFloat?) {
|
||||
public init(screenSize: CGSize, scale: CGFloat, statusBarHeight: CGFloat, onScreenNavigationHeight: CGFloat?) {
|
||||
var screenSize = screenSize
|
||||
if screenSize.width > screenSize.height {
|
||||
screenSize = CGSize(width: screenSize.height, height: screenSize.width)
|
||||
@@ -63,7 +67,11 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
let width = device.screenSize.width
|
||||
let height = device.screenSize.height
|
||||
if ((screenSize.width.isEqual(to: width) && screenSize.height.isEqual(to: height)) || (additionalSize.width.isEqual(to: width) && additionalSize.height.isEqual(to: height))) {
|
||||
self = device
|
||||
if case .iPhoneXSMax = device, scale == 2.0 {
|
||||
self = .iPhoneXr
|
||||
} else {
|
||||
self = device
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -72,7 +80,7 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
|
||||
public var type: DeviceType {
|
||||
switch self {
|
||||
case .iPad, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen:
|
||||
case .iPad, .iPad102Inch, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen:
|
||||
return .tablet
|
||||
case let .unknown(screenSize, _, _) where screenSize.width >= 768.0 && screenSize.height >= 1024.0:
|
||||
return .tablet
|
||||
@@ -93,7 +101,7 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
return CGSize(width: 414.0, height: 736.0)
|
||||
case .iPhoneX:
|
||||
return CGSize(width: 375.0, height: 812.0)
|
||||
case .iPhoneXSMax:
|
||||
case .iPhoneXSMax, .iPhoneXr:
|
||||
return CGSize(width: 414.0, height: 896.0)
|
||||
case .iPhone12Mini:
|
||||
return CGSize(width: 360.0, height: 780.0)
|
||||
@@ -103,6 +111,8 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
return CGSize(width: 428.0, height: 926.0)
|
||||
case .iPad:
|
||||
return CGSize(width: 768.0, height: 1024.0)
|
||||
case .iPad102Inch:
|
||||
return CGSize(width: 810.0, height: 1080.0)
|
||||
case .iPadPro10Inch:
|
||||
return CGSize(width: 834.0, height: 1112.0)
|
||||
case .iPadPro11Inch:
|
||||
@@ -114,9 +124,32 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
}
|
||||
}
|
||||
|
||||
public var screenCornerRadius: CGFloat {
|
||||
switch self {
|
||||
case .iPhoneX, .iPhoneXSMax:
|
||||
return 39.0
|
||||
case .iPhoneXr:
|
||||
return 41.0 + UIScreenPixel
|
||||
case .iPhone12Mini:
|
||||
return 44.0
|
||||
case .iPhone12:
|
||||
return 47.0 + UIScreenPixel
|
||||
case .iPhone12ProMax:
|
||||
return 53.0 + UIScreenPixel
|
||||
case let .unknown(_, _, onScreenNavigationHeight):
|
||||
if let _ = onScreenNavigationHeight {
|
||||
return 39.0
|
||||
} else {
|
||||
return 0.0
|
||||
}
|
||||
default:
|
||||
return 0.0
|
||||
}
|
||||
}
|
||||
|
||||
func safeInsets(inLandscape: Bool) -> UIEdgeInsets {
|
||||
switch self {
|
||||
case .iPhoneX, .iPhoneXSMax, .iPhone12Mini, .iPhone12, .iPhone12ProMax:
|
||||
case .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax:
|
||||
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
|
||||
@@ -125,7 +158,7 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
|
||||
func onScreenNavigationHeight(inLandscape: Bool, systemOnScreenNavigationHeight: CGFloat?) -> CGFloat? {
|
||||
switch self {
|
||||
case .iPhoneX, .iPhoneXSMax, .iPhone12Mini, .iPhone12, .iPhone12ProMax:
|
||||
case .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax:
|
||||
return inLandscape ? 21.0 : 34.0
|
||||
case .iPadPro3rdGen, .iPadPro11Inch:
|
||||
return 21.0
|
||||
@@ -144,10 +177,9 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
|
||||
func statusBarHeight(for size: CGSize) -> CGFloat? {
|
||||
let value = self.statusBarHeight
|
||||
switch self {
|
||||
case .iPad, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen:
|
||||
if self.type == .tablet {
|
||||
return value
|
||||
default:
|
||||
} else {
|
||||
if size.width < size.height {
|
||||
return value
|
||||
} else {
|
||||
@@ -158,7 +190,7 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
|
||||
var statusBarHeight: CGFloat {
|
||||
switch self {
|
||||
case .iPhoneX, .iPhoneXSMax, .iPhone12Mini, .iPhone12, .iPhone12ProMax:
|
||||
case .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax:
|
||||
return 44.0
|
||||
case .iPadPro11Inch, .iPadPro3rdGen:
|
||||
return 24.0
|
||||
@@ -176,9 +208,9 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
return 162.0
|
||||
case .iPhone6, .iPhone6Plus:
|
||||
return 163.0
|
||||
case .iPhoneX, .iPhoneXSMax, .iPhone12Mini, .iPhone12, .iPhone12ProMax:
|
||||
case .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax:
|
||||
return 172.0
|
||||
case .iPad, .iPadPro10Inch:
|
||||
case .iPad, .iPad102Inch, .iPadPro10Inch:
|
||||
return 348.0
|
||||
case .iPadPro11Inch:
|
||||
return 368.0
|
||||
@@ -197,9 +229,9 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
return 226.0
|
||||
case .iPhoneX, .iPhone12Mini, .iPhone12:
|
||||
return 291.0
|
||||
case .iPhoneXSMax, .iPhone12ProMax:
|
||||
case .iPhoneXSMax, .iPhoneXr, .iPhone12ProMax:
|
||||
return 302.0
|
||||
case .iPad, .iPadPro10Inch:
|
||||
case .iPad, .iPad102Inch, .iPadPro10Inch:
|
||||
return 263.0
|
||||
case .iPadPro11Inch:
|
||||
return 283.0
|
||||
@@ -216,9 +248,9 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
func predictiveInputHeight(inLandscape: Bool) -> CGFloat {
|
||||
if inLandscape {
|
||||
switch self {
|
||||
case .iPhone4, .iPhone5, .iPhone6, .iPhone6Plus, .iPhoneX, .iPhoneXSMax, .iPhone12Mini, .iPhone12, .iPhone12ProMax:
|
||||
case .iPhone4, .iPhone5, .iPhone6, .iPhone6Plus, .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax:
|
||||
return 37.0
|
||||
case .iPad, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen:
|
||||
case .iPad, .iPad102Inch, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen:
|
||||
return 50.0
|
||||
case .unknown:
|
||||
return 37.0
|
||||
@@ -227,11 +259,11 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
switch self {
|
||||
case .iPhone4, .iPhone5:
|
||||
return 37.0
|
||||
case .iPhone6, .iPhoneX, .iPhoneXSMax, .iPhone12Mini, .iPhone12, .iPhone12ProMax:
|
||||
case .iPhone6, .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax:
|
||||
return 44.0
|
||||
case .iPhone6Plus:
|
||||
return 45.0
|
||||
case .iPad, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen:
|
||||
case .iPad, .iPad102Inch, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen:
|
||||
return 50.0
|
||||
case .unknown:
|
||||
return 44.0
|
||||
@@ -241,7 +273,7 @@ public enum DeviceMetrics: CaseIterable, Equatable {
|
||||
|
||||
public var hasTopNotch: Bool {
|
||||
switch self {
|
||||
case .iPhoneX, .iPhoneXSMax, .iPhone12Mini, .iPhone12, .iPhone12ProMax:
|
||||
case .iPhoneX, .iPhoneXSMax, .iPhoneXr, .iPhone12Mini, .iPhone12, .iPhone12ProMax:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
|
||||
Reference in New Issue
Block a user