123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- //
- // TSDiscoverListCell.swift
- // AIRingtone
- //
- // Created by 100Years on 2025/3/17.
- //
- class TSDiscoverListCell: TSBaseCollectionCell {
-
- static let cellID = "TSDiscoverListCell"
- lazy var setRingBtn: TSUIExpandedTouchButton = {
- let setRingBtn = TSUIExpandedTouchButton()
- setRingBtn.setImage(UIImage(named: "ai_setRing_icon"), for: .normal)
- return setRingBtn
- }()
-
- lazy var ringView: TSRingToneCellView = {
- let ringToneView = TSRingToneCellView()
- ringToneView.backgroundColor = .clear
- ringToneView.playBtn.addTarget(self, action: #selector(clickPlay), for: .touchUpInside)
- return ringToneView
- }()
-
-
- lazy var exampleView: UIView = {
- let exampleView = UIView()
- exampleView.backgroundColor = "#7E57F4".uiColor
-
- let textLabel = UILabel.createLabel(
- text: "Example".localized,
- font: .font(size: 12),
- textColor: .white
- )
-
- exampleView.addSubview(textLabel)
- textLabel.snp.makeConstraints { make in
- make.top.edges.equalTo(UIEdgeInsets(top: 4, left: 6, bottom: 4, right: 6))
- }
-
- kDelayMainShort {
- exampleView.makeCorner([.topLeft,.bottomLeft], radius: 10)
- }
- // exampleView.isHidden = true
- return exampleView
- }()
-
- var ringModel:TSRingModel?{
- didSet{
- guard let ringModel = ringModel else { return }
- ringView.timeLab.text = Float(ringModel.duration).floatToMinuteSecond()
- ringView.nameLab.text = ringModel.title
- ringView.setCoverImageView(urlString: "")
- exampleView.isHidden = true
- }
- }
-
- override var isSelected: Bool{
- didSet{
- ringView.isloading = isSelected
- if isSelected, self.ringView.isPlay == false{
- TSBusinessAudioPlayer.shared.playUrlString( ringModel?.audioUrl)
- }else{
- TSBusinessAudioPlayer.shared.stop()
- backgroundColor = .cardColor
- }
- }
- }
-
- override func creatUI() {
- cornerRadius = 16.0
- backgroundColor = .cardColor
-
- contentView.addSubview(exampleView)
- exampleView.snp.makeConstraints { make in
- make.trailing.equalToSuperview()
- make.top.equalTo(0)
- make.height.equalTo(20)
- }
-
- contentView.addSubview(ringView)
- ringView.snp.makeConstraints { make in
- make.edges.equalToSuperview()
- }
-
- contentView.addSubview(setRingBtn)
- setRingBtn.snp.makeConstraints { make in
- make.centerY.equalToSuperview()
- make.trailing.equalTo(-16)
- make.width.height.equalTo(20)
- }
-
- NotificationCenter.default.addObserver(forName: .kBusinessAudioStateChange, object: nil, queue: nil) { notification in
- if let userInfo = notification.userInfo as? [String: TSBusinessAudioPlayer.PlayerState], let state = userInfo["PlayerState"] {
- kExecuteOnMainThread {
- self.changePlayerState(state: state)
- }
-
- }
- }
- }
- override func dealThings() {
-
- }
- override func renderView(with object: Any?, component: TSCollectionViewComponent, attributes: [String : Any]?) {
- super.renderView(with: object, component: component, attributes: attributes)
- if let itemModel = object as? TSColVVMItemModel{
- if let dataModel = itemModel.dataModel as? TSRingModel{
- ringModel = dataModel
-
-
- // if let ringModel = ringModel {
- // if ringModel.audioPlayerFileTool == nil {
- // ringModel.audioPlayerFileTool = TSAudioPlayerFileTool(urlString: ringModel.audioUrl)
- // }
- // }
-
-
- }
- }
- }
- deinit {
- NotificationCenter.default.removeObserver(self)
- }
- }
- extension TSDiscoverListCell{
-
- @objc func clickPlay(){
-
-
- }
-
-
- func changePlayerState(state:TSBusinessAudioPlayer.PlayerState){
- if self.isSelected == false {
- self.ringView.isPlay = false
- return
- }
-
- switch state {
- case .loading(let progress):
- if progress == 0.0 {
- self.ringView.isloading = true
- }else if progress == 1.0 {
- self.ringView.isloading = false
- }
- case .play:
- self.ringView.isPlay = true
- backgroundColor = "#3C213F".uiColor
- case .stop:
- self.ringView.isPlay = false
- backgroundColor = .cardColor
- default:
- break
- }
- }
- }
|