LNDatePickerPanel.swift 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //
  2. // LNDatePickerPanel.swift
  3. // Lanu
  4. //
  5. // Created by OneeChan on 2025/12/3.
  6. //
  7. import Foundation
  8. import UIKit
  9. import SnapKit
  10. class LNDatePickerPanel: LNPopupView {
  11. var handler: ((TimeInterval) -> Void)?
  12. let titleLabel = UILabel()
  13. let datePicker = UIDatePicker()
  14. override init(frame: CGRect) {
  15. super.init(frame: frame)
  16. setupViews()
  17. }
  18. func setDefault(_ date: TimeInterval) {
  19. datePicker.date = Date(timeIntervalSince1970: date)
  20. }
  21. required init?(coder: NSCoder) {
  22. fatalError("init(coder:) has not been implemented")
  23. }
  24. }
  25. extension LNDatePickerPanel {
  26. private func setupViews() {
  27. let header = UIView()
  28. container.addSubview(header)
  29. header.snp.makeConstraints { make in
  30. make.horizontalEdges.equalToSuperview()
  31. make.top.equalToSuperview()
  32. make.height.equalTo(50)
  33. }
  34. titleLabel.font = .heading_h3
  35. titleLabel.textColor = .text_5
  36. header.addSubview(titleLabel)
  37. titleLabel.snp.makeConstraints { make in
  38. make.center.equalToSuperview()
  39. }
  40. let confirm = UIButton()
  41. confirm.setTitle(.init(key: "A00002"), for: .normal)
  42. confirm.setTitleColor(.text_1, for: .normal)
  43. confirm.setBackgroundImage(.primary_8, for: .normal)
  44. confirm.layer.cornerRadius = 23.5
  45. confirm.titleLabel?.font = .heading_h3
  46. confirm.clipsToBounds = true
  47. confirm.addAction(UIAction(handler: { [weak self] _ in
  48. guard let self else { return }
  49. handler?(datePicker.date.timeIntervalSince1970)
  50. dismiss()
  51. }), for: .touchUpInside)
  52. container.addSubview(confirm)
  53. confirm.snp.makeConstraints { make in
  54. make.horizontalEdges.equalToSuperview().inset(22)
  55. make.bottom.equalToSuperview().offset(commonBottomInset)
  56. make.height.equalTo(47)
  57. }
  58. datePicker.locale = curLocal
  59. datePicker.datePickerMode = .date
  60. datePicker.preferredDatePickerStyle = .wheels
  61. container.addSubview(datePicker)
  62. datePicker.snp.makeConstraints { make in
  63. make.horizontalEdges.equalToSuperview().inset(12)
  64. make.top.equalTo(header.snp.bottom)
  65. make.bottom.equalTo(confirm.snp.top).offset(-10)
  66. }
  67. }
  68. }