ASRTRFileView.swift 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. //
  2. // ASRTRFileView.swift
  3. // AIPlayRingtones
  4. //
  5. // Created by mini on 2025/5/19.
  6. //
  7. class ASRTRFileUploadView: ASBaseView {
  8. var clickComplete:(()->Void)?
  9. var clickPlayComplete:(()->Void)?
  10. lazy var imageView: UIImageView = {
  11. let imageView = UIImageView.createImageV(image: .uploadFileIcon)
  12. return imageView
  13. }()
  14. lazy var textLab: UILabel = {
  15. let textLab = UILabel.createLabel(text: "Upload audio files to generate new ringtones".localized ,font: .font(size:14,weight: .regular),textColor: .white,textAlignment: .left)
  16. return textLab
  17. }()
  18. lazy var btn: UIButton = {
  19. let imageView = UIButton.createBtn(image: .uploadFileAdd)
  20. { [weak self] in
  21. guard let self = self else { return }
  22. clickComplete?()
  23. }
  24. return imageView
  25. }()
  26. override func creatUI() {
  27. contentView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(clickView)))
  28. contentView.addSubview(imageView)
  29. imageView.snp.makeConstraints { make in
  30. make.leading.equalTo(12)
  31. make.centerY.equalToSuperview()
  32. make.width.equalTo(80)
  33. make.height.equalTo(60)
  34. }
  35. contentView.addSubview(btn)
  36. btn.snp.makeConstraints { make in
  37. make.trailing.equalTo(-12)
  38. make.centerY.equalToSuperview()
  39. make.width.equalTo(40)
  40. make.height.equalTo(40)
  41. }
  42. contentView.addSubview(textLab)
  43. textLab.snp.makeConstraints { make in
  44. make.leading.equalTo(imageView.snp.trailing).offset(12)
  45. make.trailing.equalTo(btn.snp.leading).offset(-12)
  46. make.centerY.equalToSuperview()
  47. }
  48. }
  49. @objc func clickView(){
  50. clickComplete?()
  51. }
  52. }
  53. class ASRTRFileplayView: ASBaseView {
  54. var clickComplete:(()->Void)?
  55. var clickPlayComplete:(()->Void)?
  56. lazy var ringView: ASRingToneCellView = {
  57. let ringToneView = ASRingToneCellView()
  58. ringToneView.cornerRadius = 0.0
  59. ringToneView.setRingBtn.isHidden = true
  60. ringToneView.editBtn.isHidden = true
  61. ringToneView.clickPlayHandel = { [weak self] isplay in
  62. guard let self = self else { return }
  63. ringView.monitorPlayStateDefaultHandle()
  64. clickPlayComplete?()
  65. }
  66. ringToneView.rightShade.isHidden = true
  67. ringToneView.bgImageView.isHidden = true
  68. // ringToneView.selectedBoardImageView.isHidden = true
  69. ringToneView.timeLab.textColor = .white.withAlphaComponent(0.8)
  70. ringToneView.nameLab.snp.updateConstraints { make in
  71. make.top.equalTo(20)
  72. }
  73. ringToneView.timeLab.snp.updateConstraints { make in
  74. make.bottom.equalTo(-20)
  75. }
  76. ringToneView.progressView.snp.updateConstraints { make in
  77. make.trailing.equalTo(-60)
  78. }
  79. return ringToneView
  80. }()
  81. lazy var btn: UIButton = {
  82. let imageView = UIButton.createBtn(image: .uploadFileChange){ [weak self] in
  83. guard let self = self else { return }
  84. clickComplete?()
  85. }
  86. return imageView
  87. }()
  88. override func creatUI() {
  89. contentView.addSubview(ringView)
  90. ringView.snp.makeConstraints { make in
  91. make.edges.equalToSuperview()
  92. }
  93. contentView.addSubview(btn)
  94. btn.snp.makeConstraints { make in
  95. make.trailing.equalTo(-12)
  96. make.centerY.equalToSuperview()
  97. make.width.equalTo(40)
  98. make.height.equalTo(40)
  99. }
  100. }
  101. override func dealThings() {
  102. }
  103. }
  104. class ASRTRFileView: ASBaseView {
  105. var clickUpFileComplete:(()->Void)
  106. var clickPlayComplete:(()->Void)
  107. init(clickUpFileComplete: @escaping () -> Void, clickPlayComplete: @escaping () -> Void, filePath: URL? = nil) {
  108. self.clickUpFileComplete = clickUpFileComplete
  109. self.clickPlayComplete = clickPlayComplete
  110. self.filePath = filePath
  111. super.init(frame: .zero)
  112. }
  113. @MainActor required init?(coder: NSCoder) {
  114. fatalError("init(coder:) has not been implemented")
  115. }
  116. var filePath:URL?{
  117. didSet{
  118. playView.isHidden = filePath == nil ? true : false
  119. uploadView.isHidden = !playView.isHidden
  120. if let filePath = filePath {
  121. if let info = TSBusinessAudioPlayer.getAudioFileInfo(path: filePath.path()){
  122. playView.ringView.nameLab.text = info.songName
  123. playView.ringView.timeLab.text = Float(info.durationInSeconds ?? 0).timeMMSS
  124. }
  125. }
  126. }
  127. }
  128. lazy var uploadView: ASRTRFileUploadView = {
  129. let uploadView = ASRTRFileUploadView()
  130. uploadView.clickComplete = clickUpFileComplete
  131. return uploadView
  132. }()
  133. lazy var playView: ASRTRFileplayView = {
  134. let playView = ASRTRFileplayView()
  135. playView.isHidden = true
  136. playView.clickComplete = clickUpFileComplete
  137. playView.clickPlayComplete = clickPlayComplete
  138. return playView
  139. }()
  140. override func creatUI() {
  141. contentView.snp.remakeConstraints { make in
  142. make.height.equalTo(84)
  143. make.edges.equalTo(UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16))
  144. }
  145. contentView.cornerRadius = 16.0
  146. kAddCommonGradientBg(view: contentView)
  147. contentView.addSubview(playView)
  148. contentView.addSubview(uploadView)
  149. playView.snp.makeConstraints { make in
  150. make.edges.equalToSuperview()
  151. }
  152. uploadView.snp.makeConstraints { make in
  153. make.edges.equalToSuperview()
  154. }
  155. }
  156. }