LNSkillReviewViewController.swift 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. //
  2. // LNSkillReviewViewController.swift
  3. // Gami
  4. //
  5. // Created by OneeChan on 2026/1/26.
  6. //
  7. import Foundation
  8. import UIKit
  9. import SnapKit
  10. extension UIView {
  11. func pushToSkillReview(cls: UIViewController.Type? = nil) {
  12. let vc = LNSkillReviewViewController()
  13. if let cls,
  14. let index = navigationController?.viewControllers.lastIndex (where: { type(of: $0) == cls }),
  15. var viewControllers = navigationController?.viewControllers {
  16. viewControllers = Array(viewControllers[0..<index])
  17. viewControllers.append(vc)
  18. navigationController?.setViewControllers(viewControllers, animated: true)
  19. } else {
  20. navigationController?.pushViewController(vc, animated: true)
  21. }
  22. }
  23. }
  24. class LNSkillReviewViewController: LNViewController {
  25. override func viewDidLoad() {
  26. super.viewDidLoad()
  27. setupViews()
  28. }
  29. }
  30. extension LNSkillReviewViewController {
  31. private func setupViews() {
  32. title = .init(key: "B00101")
  33. view.backgroundColor = .primary_1
  34. let infoView = buildInfoView()
  35. view.addSubview(infoView)
  36. infoView.snp.makeConstraints { make in
  37. make.horizontalEdges.equalToSuperview()
  38. make.centerY.equalToSuperview().multipliedBy(0.75)
  39. }
  40. }
  41. private func buildInfoView() -> UIView {
  42. let container = UIView()
  43. let icon = UIImageView()
  44. icon.image = .icJoinUsReview
  45. container.addSubview(icon)
  46. icon.snp.makeConstraints { make in
  47. make.centerX.equalToSuperview()
  48. make.top.equalToSuperview()
  49. }
  50. let titleLabel = UILabel()
  51. titleLabel.text = .init(key: "B00061")
  52. titleLabel.font = .heading_h3
  53. titleLabel.textColor = .text_5
  54. titleLabel.numberOfLines = 0
  55. titleLabel.textAlignment = .center
  56. container.addSubview(titleLabel)
  57. titleLabel.snp.makeConstraints { make in
  58. make.horizontalEdges.equalToSuperview().inset(32)
  59. make.top.equalTo(icon.snp.bottom).offset(10)
  60. }
  61. let descLabel = UILabel()
  62. descLabel.text = .init(key: "B00062")
  63. descLabel.font = .body_s
  64. descLabel.textColor = .text_5
  65. descLabel.numberOfLines = 0
  66. descLabel.textAlignment = .center
  67. container.addSubview(descLabel)
  68. descLabel.snp.makeConstraints { make in
  69. make.horizontalEdges.equalToSuperview().inset(32)
  70. make.bottom.equalToSuperview()
  71. make.top.equalTo(titleLabel.snp.bottom).offset(4)
  72. }
  73. return container
  74. }
  75. }
  76. #if DEBUG
  77. import SwiftUI
  78. struct LNSkillReviewViewControllerPreview: UIViewControllerRepresentable {
  79. func makeUIViewController(context: Context) -> some UIViewController {
  80. LNSkillReviewViewController()
  81. }
  82. func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) { }
  83. }
  84. #Preview(body: {
  85. LNSkillReviewViewControllerPreview()
  86. })
  87. #endif