mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-15 21:45:19 +00:00
185 lines
7.7 KiB
Swift
185 lines
7.7 KiB
Swift
import Foundation
|
|
import UIKit
|
|
import Display
|
|
|
|
struct PasscodeKeyboardLayout {
|
|
var buttonSize: CGFloat
|
|
var horizontalSecond: CGFloat
|
|
var horizontalThird: CGFloat
|
|
var verticalSecond: CGFloat
|
|
var verticalThird: CGFloat
|
|
var verticalFourth: CGFloat
|
|
var size: CGSize
|
|
var topOffset: CGFloat
|
|
var biometricsOffset: CGFloat
|
|
var deleteOffset: CGFloat
|
|
|
|
fileprivate init(layout: ContainerViewLayout, modalPresentation: Bool) {
|
|
var modalOffset: CGFloat = 0.0
|
|
var modalBiometricsOffset: CGFloat = 0.0
|
|
if modalPresentation {
|
|
modalOffset -= 20.0
|
|
modalBiometricsOffset -= 8.0
|
|
}
|
|
|
|
switch layout.deviceMetrics {
|
|
case .iPhone4:
|
|
self.buttonSize = 75.0
|
|
self.horizontalSecond = 95.0
|
|
self.horizontalThird = 190.0
|
|
self.verticalSecond = 88.0
|
|
self.verticalThird = 176.0
|
|
self.verticalFourth = 264.0
|
|
self.size = CGSize(width: 265.0, height: 339.0)
|
|
self.topOffset = 122.0
|
|
self.biometricsOffset = 0.0
|
|
self.deleteOffset = 45.0
|
|
case .iPhone5:
|
|
self.buttonSize = 75.0
|
|
self.horizontalSecond = 95.0
|
|
self.horizontalThird = 190.0
|
|
self.verticalSecond = 88.0
|
|
self.verticalThird = 176.0
|
|
self.verticalFourth = 264.0
|
|
self.size = CGSize(width: 265.0, height: 339.0)
|
|
self.topOffset = 155.0
|
|
self.biometricsOffset = 23.0
|
|
self.deleteOffset = 20.0
|
|
case .iPhone6:
|
|
self.buttonSize = 75.0
|
|
self.horizontalSecond = 103.0
|
|
self.horizontalThird = 206.0
|
|
self.verticalSecond = 90.0
|
|
self.verticalThird = 180.0
|
|
self.verticalFourth = 270.0
|
|
self.size = CGSize(width: 281.0, height: 348.0)
|
|
self.topOffset = 221.0
|
|
self.biometricsOffset = 30.0
|
|
self.deleteOffset = 20.0
|
|
case .iPhone6Plus:
|
|
self.buttonSize = 85.0
|
|
self.horizontalSecond = 115.0
|
|
self.horizontalThird = 230.0
|
|
self.verticalSecond = 100.0
|
|
self.verticalThird = 200.0
|
|
self.verticalFourth = 300.0
|
|
self.size = CGSize(width: 315.0, height: 385.0)
|
|
self.topOffset = 226.0
|
|
self.biometricsOffset = 30.0
|
|
self.deleteOffset = 20.0
|
|
case .iPhoneX, .iPhone12Mini, .iPhone12, .iPhone13Mini, .iPhone13, .iPhone13Pro, .iPhone14Pro, .iPhone14ProZoomed, .iPhone14ProMaxZoomed, .iPhone16Pro:
|
|
self.buttonSize = 75.0
|
|
self.horizontalSecond = 103.0
|
|
self.horizontalThird = 206.0
|
|
self.verticalSecond = 91.0
|
|
self.verticalThird = 182.0
|
|
self.verticalFourth = 273.0
|
|
self.size = CGSize(width: 281.0, height: 348.0)
|
|
self.topOffset = 294.0
|
|
self.biometricsOffset = 30.0
|
|
self.deleteOffset = 20.0
|
|
case .iPhoneXSMax, .iPhoneXr, .iPhone12ProMax, .iPhone13ProMax, .iPhone14ProMax, .iPhone16ProMax:
|
|
self.buttonSize = 85.0
|
|
self.horizontalSecond = 115.0
|
|
self.horizontalThird = 230.0
|
|
self.verticalSecond = 100.0
|
|
self.verticalThird = 200.0
|
|
self.verticalFourth = 300.0
|
|
self.size = CGSize(width: 315.0, height: 385.0)
|
|
self.topOffset = 329.0
|
|
self.biometricsOffset = 30.0
|
|
self.deleteOffset = 20.0
|
|
case .iPad, .iPad102Inch, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen, .iPadMini, .iPadMini6thGen:
|
|
self.buttonSize = 81.0
|
|
self.horizontalSecond = 106.0
|
|
self.horizontalThird = 212.0
|
|
self.verticalSecond = 101.0
|
|
self.verticalThird = 202.0
|
|
self.verticalFourth = 303.0
|
|
self.size = CGSize(width: 293.0, height: 384.0)
|
|
self.topOffset = 120.0 + (layout.size.height - self.size.height - 120.0) / 2.0
|
|
self.biometricsOffset = 30.0
|
|
self.deleteOffset = 80.0
|
|
case .unknown:
|
|
self.buttonSize = 75.0
|
|
self.horizontalSecond = 95.0
|
|
self.horizontalThird = 190.0
|
|
self.verticalSecond = 88.0
|
|
self.verticalThird = 176.0
|
|
self.verticalFourth = 264.0
|
|
self.size = CGSize(width: 265.0, height: 339.0)
|
|
self.topOffset = 120.0 + (layout.size.height - self.size.height - 120.0) / 2.0
|
|
self.biometricsOffset = 30.0
|
|
self.deleteOffset = 20.0
|
|
}
|
|
|
|
self.topOffset += modalOffset * 2.0
|
|
self.biometricsOffset += modalBiometricsOffset
|
|
}
|
|
}
|
|
|
|
public struct PasscodeLayout {
|
|
var layout: ContainerViewLayout
|
|
var keyboard: PasscodeKeyboardLayout
|
|
var titleOffset: CGFloat
|
|
var subtitleOffset: CGFloat
|
|
var inputFieldOffset: CGFloat
|
|
|
|
init(layout: ContainerViewLayout, modalPresentation: Bool) {
|
|
self.layout = layout
|
|
|
|
var modalOffset: CGFloat = 0.0
|
|
if modalPresentation {
|
|
modalOffset -= 20.0
|
|
}
|
|
|
|
self.keyboard = PasscodeKeyboardLayout(layout: layout, modalPresentation: modalPresentation)
|
|
switch layout.deviceMetrics {
|
|
case .iPhone4:
|
|
self.titleOffset = 30.0
|
|
self.subtitleOffset = -13.0
|
|
self.inputFieldOffset = 70.0
|
|
case .iPhone5:
|
|
self.titleOffset = 50.0
|
|
self.subtitleOffset = -7.0
|
|
self.inputFieldOffset = 90.0
|
|
case .iPhone6:
|
|
self.titleOffset = 100.0
|
|
self.subtitleOffset = -3.0
|
|
self.inputFieldOffset = 144.0
|
|
case .iPhone6Plus:
|
|
self.titleOffset = 112.0
|
|
self.subtitleOffset = -6.0
|
|
self.inputFieldOffset = 156.0
|
|
case .iPhoneX, .iPhone12Mini, .iPhone12, .iPhone13Mini, .iPhone13, .iPhone13Pro, .iPhone14Pro, .iPhone14ProZoomed, .iPhone14ProMaxZoomed, .iPhone16Pro:
|
|
self.titleOffset = 162.0
|
|
self.subtitleOffset = 0.0
|
|
self.inputFieldOffset = 206.0
|
|
case .iPhoneXSMax, .iPhoneXr, .iPhone12ProMax, .iPhone13ProMax, .iPhone14ProMax, .iPhone16ProMax:
|
|
self.titleOffset = 180.0
|
|
self.subtitleOffset = 0.0
|
|
self.inputFieldOffset = 226.0
|
|
case .iPad, .iPad102Inch, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen, .iPadMini, .iPadMini6thGen:
|
|
self.titleOffset = self.keyboard.topOffset - 120.0
|
|
self.subtitleOffset = -2.0
|
|
self.inputFieldOffset = self.keyboard.topOffset - 76.0
|
|
case .unknown:
|
|
self.titleOffset = 100.0
|
|
self.subtitleOffset = 0.0
|
|
self.inputFieldOffset = 140.0
|
|
}
|
|
|
|
self.titleOffset += modalOffset
|
|
self.subtitleOffset += modalOffset
|
|
self.inputFieldOffset += modalOffset
|
|
}
|
|
|
|
public init(layout: ContainerViewLayout, titleOffset: CGFloat, subtitleOffset: CGFloat, inputFieldOffset: CGFloat, modalPresentation: Bool) {
|
|
self.layout = layout
|
|
self.keyboard = PasscodeKeyboardLayout(layout: layout, modalPresentation: modalPresentation)
|
|
self.titleOffset = titleOffset
|
|
self.subtitleOffset = subtitleOffset
|
|
self.inputFieldOffset = inputFieldOffset
|
|
}
|
|
}
|