123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- //
- // APAudioToRingVC.swift
- // AIPlayRingtones
- //
- // Created by 100Years on 2025/5/15.
- //
- import MobileCoreServices // 用于定义文件类型
- class APAudioToRingVC: TSBaseVC {
- lazy var navBarView: TSBaseNavContentBarView = {
- let navBarView = TSBaseNavContentBarView()
-
- let titleImageView = UIImageView.createImageView(imageName: "nav_title_audioRingtone", contentMode: .scaleToFill)
- navBarView.barView.addSubview(titleImageView)
- titleImageView.snp.makeConstraints { make in
- make.center.equalToSuperview()
- }
- return navBarView
- }()
-
- lazy var viewModel: APAudioToRingVM = {
- let viewModel = APAudioToRingVM()
- return viewModel
- }()
-
-
- // lazy var vipBtn: UIButton = creatVipBtn()
- lazy var cusStackView: TSCustomStackView = creatCusStackView()
- lazy var fileView: ASRTRFileView = creatFileView()
- lazy var customTextView: ASPromptTextView = creatCustomTextView()
- lazy var ringStyleView: ASRTRStyleView = createRTRStyleView()
- lazy var creatBtnView: ASAppBtnView = creatCreatBtnView()
-
- override func createView() {
-
- let tapGesture = UITapGestureRecognizer(target: self, action: #selector(clickView))
- tapGesture.cancelsTouchesInView = false
- view.addGestureRecognizer(tapGesture)
-
- navBarContentView.addSubview(navBarView)
- navBarView.snp.makeConstraints { make in
- make.edges.equalToSuperview()
- }
-
- contentView.addSubview(cusStackView)
- cusStackView.snp.makeConstraints { make in
- make.edges.equalToSuperview()
- }
-
- contentView.addSubview(creatBtnView)
- creatBtnView.snp.makeConstraints { make in
- make.centerX.equalToSuperview()
- make.bottom.equalTo(-16)
- make.size.equalTo(creatBtnView.btnSize)
- }
-
- setUpCusStackView()
-
- }
-
- override func dealThings() {
- viewModel.$isCanGennerate.receive(on: DispatchQueue.main).sink { [weak self] enble in
- guard let self = self else { return }
- setCreatBtnEnabled()
- }.store(in: &cancellable)
-
- NotificationCenter.default.addObserver(forName: .kBaseOperationQueueCountChanged, object: nil, queue: .main) { [weak self] notification in
- guard let self = self else { return }
- if let userInfo = notification.userInfo as? [String: Any], let _ = userInfo["ASBaseOperationQueue"] as? ASGenerateRingToRingOperationQueue {
- setCreatBtnEnabled()
- }
- }
-
- NotificationCenter.default.addObserver(forName: .kGenerateRTROperationChanged, object: nil, queue: .main) { [weak self] notification in
- guard let self = self else { return }
- if let userInfo = notification.userInfo as? [String: Any], let state = userInfo["state"] as? ASProgressState {
- if case let .progress(_,progressString) = state {
- creatBtnView.setLoadingText(text: progressString)
- }
- }
- }
- }
-
- override func viewWillDisappear(_ animated: Bool) {
- super.viewWillDisappear(animated)
- TSBusinessAudioPlayer.shared.stop()
- }
- }
- extension APAudioToRingVC {
- @objc func clickView() {
- view.endEditing(true)
- }
-
- func setCreatBtnEnabled() {
- let isAvailability = ASGenerateRingToRingOperationQueue.shared.isAvailability
- if viewModel.isCanGennerate, isAvailability {
- creatBtnView.setBtnEnabled(isEnabled: true)
- creatBtnView.loading = false
- } else {
- creatBtnView.setBtnEnabled(isEnabled: false)
-
- let loading = !isAvailability
- if creatBtnView.loading != loading {
- creatBtnView.loading = loading
- }
- }
- }
-
- func generateAI() {
- view.endEditing(true)
- let gennerateVC = ASRingGeneratorVC(generateStyleModel: viewModel.generateStyleModel)
- kPresentModalVC(target: self, modelVC: gennerateVC, transitionStyle: .crossDissolve)
- }
-
- }
|