Swiftgram/submodules/PasscodeUI/Sources/PasscodeLayout.swift
2019-09-21 01:30:01 +03:00

166 lines
6.4 KiB
Swift

import Foundation
import UIKit
import Display
struct PasscodeKeyboardLayout {
let buttonSize: CGFloat
let horizontalSecond: CGFloat
let horizontalThird: CGFloat
let verticalSecond: CGFloat
let verticalThird: CGFloat
let verticalFourth: CGFloat
let size: CGSize
let topOffset: CGFloat
let biometricsOffset: CGFloat
let deleteOffset: CGFloat
fileprivate init(layout: ContainerViewLayout) {
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:
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:
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, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen:
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 = 0.0
self.biometricsOffset = 30.0
self.deleteOffset = 20.0
}
}
}
public struct PasscodeLayout {
let layout: ContainerViewLayout
let keyboard: PasscodeKeyboardLayout
let titleOffset: CGFloat
let subtitleOffset: CGFloat
let inputFieldOffset: CGFloat
init(layout: ContainerViewLayout) {
self.layout = layout
self.keyboard = PasscodeKeyboardLayout(layout: layout)
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:
self.titleOffset = 162.0
self.subtitleOffset = 0.0
self.inputFieldOffset = 206.0
case .iPhoneXSMax:
self.titleOffset = 180.0
self.subtitleOffset = 0.0
self.inputFieldOffset = 226.0
case .iPad, .iPadPro10Inch, .iPadPro11Inch, .iPadPro, .iPadPro3rdGen:
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
}
}
public init(layout: ContainerViewLayout, titleOffset: CGFloat, subtitleOffset: CGFloat, inputFieldOffset: CGFloat) {
self.layout = layout
self.keyboard = PasscodeKeyboardLayout(layout: layout)
self.titleOffset = titleOffset
self.subtitleOffset = subtitleOffset
self.inputFieldOffset = inputFieldOffset
}
}