PublishMusicListCell.swift 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. //
  2. // PublishMusicListCell.swift
  3. // RainbowPlanet
  4. //
  5. // Created by Christopher on 2019/7/17.
  6. // Copyright © 2019 RainbowPlanet. All rights reserved.
  7. //
  8. import UIKit
  9. import RxSwift
  10. class PublishMusicListCell: UITableViewCell {
  11. var musicItemMdl: CommunityMusicItemModel? {
  12. didSet {
  13. titleLabel.text = self.musicItemMdl?.name
  14. if self.musicItemMdl?.isPlaying == true {
  15. iconImageView.image = kImage(name: "music_btn_pause")
  16. useButton.isHidden = false
  17. } else {
  18. iconImageView.image = kImage(name: "music_btn_play")
  19. useButton.isHidden = true
  20. }
  21. // 不选择音乐
  22. if self.musicItemMdl?.id == -1 {
  23. iconImageView.isHidden = true
  24. curPlayImageView.isHidden = true
  25. useButton.isHidden = true
  26. }
  27. }
  28. }
  29. var curMusicUrl: String? {
  30. didSet {
  31. // 是否为当前选中的音乐
  32. if self.curMusicUrl == self.musicItemMdl?.url && self.musicItemMdl?.id != -1 {
  33. curPlayImageView.isHidden = false
  34. } else {
  35. curPlayImageView.isHidden = true
  36. }
  37. }
  38. }
  39. let disposeBag = DisposeBag()
  40. typealias UseClickClosure = () -> Void
  41. var useClickClosure : UseClickClosure?
  42. class func cellWith(tableView:UITableView,indexPath:IndexPath) -> PublishMusicListCell {
  43. let ID = "PublishMusicListCell"
  44. tableView.register(PublishMusicListCell.self, forCellReuseIdentifier: ID)
  45. let cell : PublishMusicListCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! PublishMusicListCell
  46. cell.indexPath = indexPath
  47. return cell
  48. }
  49. override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  50. super.init(style: style, reuseIdentifier: reuseIdentifier)
  51. setupViews()
  52. setupLayouts()
  53. }
  54. required init?(coder aDecoder: NSCoder) {
  55. fatalError("init(coder:) has not been implemented")
  56. }
  57. var indexPath: IndexPath? {
  58. didSet {
  59. }
  60. }
  61. //MRAK: - 设置View
  62. private func setupViews() {
  63. self.selectionStyle = .none
  64. backgroundColor = UIColor.clear
  65. addSubview(iconImageView)
  66. addSubview(titleLabel)
  67. addSubview(curPlayImageView)
  68. addSubview(useButton)
  69. }
  70. private func setupLayouts() {
  71. iconImageView.snp.makeConstraints { (make) in
  72. make.left.equalTo(14)
  73. make.centerY.equalToSuperview()
  74. make.size.equalTo(18)
  75. }
  76. titleLabel.snp.makeConstraints { (make) in
  77. make.left.equalTo(iconImageView.snp_right).offset(8)
  78. make.centerY.equalToSuperview()
  79. make.height.equalTo(20)
  80. make.right.equalTo(-86)
  81. }
  82. curPlayImageView.snp.makeConstraints { (make) in
  83. make.right.equalTo(-37)
  84. make.centerY.equalToSuperview()
  85. make.size.equalTo(18)
  86. }
  87. useButton.snp.makeConstraints { (make) in
  88. make.right.equalTo(-14)
  89. make.centerY.equalToSuperview()
  90. make.width.equalTo(64)
  91. make.height.equalTo(26)
  92. }
  93. }
  94. private lazy var iconImageView: UIImageView = {
  95. let iconImageView = UIImageView()
  96. iconImageView.image = kImage(name: "music_btn_play")
  97. return iconImageView
  98. }()
  99. private lazy var titleLabel: UILabel = {
  100. let titleLabel = UILabel()
  101. titleLabel.textColor = kffffffColor
  102. titleLabel.font = kMediumFont14
  103. titleLabel.textAlignment = .left
  104. return titleLabel
  105. }()
  106. private lazy var curPlayImageView: UIImageView = {
  107. let curPlayImageView = UIImageView()
  108. curPlayImageView.image = kImage(name: "music_ico_selected")
  109. return curPlayImageView
  110. }()
  111. private lazy var useButton: UIButton = {
  112. let useButton = UIButton(type: UIButton.ButtonType.custom)
  113. useButton.setTitle("使用", for: UIControl.State.normal)
  114. useButton.titleLabel?.font = kRegularFont13
  115. useButton.setBackgroundImage(UIImage.imageWithColor(color: k62CC74Color), for: UIControl.State.normal)
  116. useButton.setTitleColor(kEnabledTitleColor, for: UIControl.State.normal)
  117. useButton.layer.cornerRadius = 13
  118. useButton.layer.masksToBounds = true
  119. useButton.rx.tap.subscribe(onNext: { [weak self] in
  120. if let useClickClosure = self?.useClickClosure {
  121. useClickClosure()
  122. }
  123. }).disposed(by: disposeBag)
  124. return useButton
  125. }()
  126. }