/
sberpay
/
AgeGate-iOS
Обзор
Документация
Войти
/
sberpay
/
AgeGate-iOS
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
develop
AgeGateSDK/KeyGen/Success/AGTKeyGenSuccessVC.swift
115 строк
4 KB
SergeyGladkiy
[0.2.0] БДСЧ сценарий
30 июл 2026, 21:57
30 июл 2026, 21:57
cbcdfcb
Код
Авторство
О чём код?
// // AGTKeyGenSuccessVC.swift // AgeGateSDK // // Created by Гладкий Сергей Игоревич on 24.07.2026. // import UIKit @MainActor protocol AGTKeyGenSuccessViewing: AnyObject { func setTitle(_ title: String, subtitle: String) } /// Экран «Ключ успешно создан». Стиль тот же, что у онбординга. final class AGTKeyGenSuccessVC: AGTContentVC, AGTKeyGenSuccessViewing { private let presenter: AGTKeyGenSuccessPresenting private lazy var illustrationView: UIImageView = { let view = UIImageView(image: AGTImage.bioSuccess) view.contentMode = .scaleAspectFit return view }() private lazy var titleLabel: UILabel = { let view = UILabel() view.font = .header4 view.textColor = .textPrimory view.numberOfLines = 2 view.textAlignment = .center return view }() private lazy var subtitleLabel: UILabel = { let view = UILabel() view.font = .medium2 view.textColor = .textSecondary view.numberOfLines = 3 view.textAlignment = .center return view }() private lazy var continueButton = DefaultButton(buttonAppearance: .full) private lazy var cancelButton = DefaultButton(buttonAppearance: .clear) private lazy var textStack: UIStackView = { let view = UIStackView(arrangedSubviews: [titleLabel, subtitleLabel]) view.axis = .vertical view.spacing = 8 return view }() private lazy var contentStack: UIStackView = { let view = UIStackView(arrangedSubviews: [illustrationView, textStack]) view.axis = .vertical view.spacing = 24 view.alignment = .fill view.translatesAutoresizingMaskIntoConstraints = false return view }() private lazy var buttonsStack: UIStackView = { let view = UIStackView(arrangedSubviews: [continueButton, cancelButton]) view.axis = .vertical view.spacing = 4 view.translatesAutoresizingMaskIntoConstraints = false return view }() init(presenter: AGTKeyGenSuccessPresenting) { self.presenter = presenter super.init(nibName: nil, bundle: nil) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func viewDidLoad() { super.viewDidLoad() setupUI() presenter.viewDidLoad() } func setTitle(_ title: String, subtitle: String) { titleLabel.text = title subtitleLabel.text = subtitle } private func setupUI() { continueButton.setTitle(Strings.Common.Button.continue, for: .normal) continueButton.addAction { [weak self] in self?.presenter.continueTapped() } continueButton.heightAnchor.constraint(equalToConstant: .defaultButtonHeight).isActive = true cancelButton.setTitle(Strings.Common.Button.cancel, for: .normal) cancelButton.addAction { [weak self] in self?.presenter.cancelTapped() } cancelButton.heightAnchor.constraint(equalToConstant: .defaultButtonHeight).isActive = true view.addSubview(contentStack) view.addSubview(buttonsStack) NSLayoutConstraint.activate([ contentStack.topAnchor.constraint(equalTo: view.topAnchor, constant: 59), contentStack.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: .margin), contentStack.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -.margin), buttonsStack.topAnchor.constraint(equalTo: contentStack.bottomAnchor, constant: 39), buttonsStack.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: .margin), buttonsStack.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -.margin), buttonsStack.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -.margin) ]) } }