LNGenderView.swift 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. //
  2. // LNGenderView.swift
  3. // Lanu
  4. //
  5. // Created by OneeChan on 2025/11/14.
  6. //
  7. import Foundation
  8. import UIKit
  9. import SnapKit
  10. class LNGenderView: UIView {
  11. private let genderIc = UIImageView()
  12. private let ageLabel = UILabel()
  13. override init(frame: CGRect) {
  14. super.init(frame: frame)
  15. setupViews()
  16. }
  17. func update(_ gender: LNUserGender, _ age: Int) {
  18. genderIc.image = switch gender {
  19. case .unknow: nil
  20. case .male: .icGenderMaleWithBg
  21. case .female: .icGenderFemaleWithBg
  22. }
  23. if gender == .unknow {
  24. ageLabel.text = nil
  25. return
  26. }
  27. ageLabel.text = "\(age)"
  28. }
  29. required init?(coder: NSCoder) {
  30. fatalError("init(coder:) has not been implemented")
  31. }
  32. }
  33. extension LNGenderView {
  34. private func setupViews() {
  35. addSubview(genderIc)
  36. genderIc.snp.makeConstraints { make in
  37. make.edges.equalToSuperview()
  38. make.width.equalTo(0).priority(.low)
  39. make.height.equalTo(0).priority(.low)
  40. }
  41. ageLabel.font = .body_xs
  42. ageLabel.textColor = .text_1
  43. addSubview(ageLabel)
  44. ageLabel.snp.makeConstraints { make in
  45. make.centerY.equalToSuperview()
  46. make.centerX.equalTo(snp.trailing).offset(-11)
  47. }
  48. }
  49. }
  50. #if DEBUG
  51. import SwiftUI
  52. struct LNGenderViewPreview: UIViewRepresentable {
  53. func makeUIView(context: Context) -> some UIView {
  54. let container = UIView()
  55. container.backgroundColor = .lightGray
  56. let view = LNGenderView()
  57. container.addSubview(view)
  58. view.snp.makeConstraints { make in
  59. make.center.equalToSuperview()
  60. }
  61. view.update(.female, 36)
  62. return container
  63. }
  64. func updateUIView(_ uiView: UIViewType, context: Context) { }
  65. }
  66. #Preview(body: {
  67. LNGenderViewPreview()
  68. })
  69. #endif