PublishMusicListCell.swift 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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. if self.musicItemMdl?.isChoosing == true {
  22. curPlayImageView.isHidden = false
  23. } else {
  24. curPlayImageView.isHidden = true
  25. }
  26. }
  27. }
  28. let disposeBag = DisposeBag()
  29. typealias UseClickClosure = () -> Void
  30. var useClickClosure : UseClickClosure?
  31. class func cellWith(tableView:UITableView,indexPath:IndexPath) -> PublishMusicListCell {
  32. let ID = "PublishMusicListCell"
  33. tableView.register(PublishMusicListCell.self, forCellReuseIdentifier: ID)
  34. let cell : PublishMusicListCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! PublishMusicListCell
  35. cell.indexPath = indexPath
  36. return cell
  37. }
  38. override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  39. super.init(style: style, reuseIdentifier: reuseIdentifier)
  40. setupViews()
  41. setupLayouts()
  42. }
  43. required init?(coder aDecoder: NSCoder) {
  44. fatalError("init(coder:) has not been implemented")
  45. }
  46. var indexPath: IndexPath? {
  47. didSet {
  48. }
  49. }
  50. //MRAK: - 设置View
  51. private func setupViews() {
  52. self.selectionStyle = .none
  53. backgroundColor = UIColor.clear
  54. addSubview(iconImageView)
  55. addSubview(titleLabel)
  56. addSubview(curPlayImageView)
  57. addSubview(useButton)
  58. }
  59. private func setupLayouts() {
  60. iconImageView.snp.makeConstraints { (make) in
  61. make.left.equalTo(14)
  62. make.centerY.equalToSuperview()
  63. make.size.equalTo(18)
  64. }
  65. titleLabel.snp.makeConstraints { (make) in
  66. make.left.equalTo(iconImageView.snp_right).offset(8)
  67. make.centerY.equalToSuperview()
  68. make.height.equalTo(20)
  69. make.right.equalTo(-86)
  70. }
  71. curPlayImageView.snp.makeConstraints { (make) in
  72. make.right.equalTo(-37)
  73. make.centerY.equalToSuperview()
  74. make.size.equalTo(18)
  75. }
  76. useButton.snp.makeConstraints { (make) in
  77. make.right.equalTo(-14)
  78. make.centerY.equalToSuperview()
  79. make.width.equalTo(64)
  80. make.height.equalTo(26)
  81. }
  82. }
  83. private lazy var iconImageView: UIImageView = {
  84. let iconImageView = UIImageView()
  85. iconImageView.image = kImage(name: "music_btn_play")
  86. return iconImageView
  87. }()
  88. private lazy var titleLabel: UILabel = {
  89. let titleLabel = UILabel()
  90. titleLabel.textColor = kffffffColor
  91. titleLabel.font = kMediumFont14
  92. titleLabel.textAlignment = .left
  93. return titleLabel
  94. }()
  95. private lazy var curPlayImageView: UIImageView = {
  96. let curPlayImageView = UIImageView()
  97. curPlayImageView.image = kImage(name: "music_ico_selected")
  98. return curPlayImageView
  99. }()
  100. private lazy var useButton: UIButton = {
  101. let useButton = UIButton(type: UIButton.ButtonType.custom)
  102. useButton.setTitle("使用", for: UIControl.State.normal)
  103. useButton.titleLabel?.font = kRegularFont13
  104. useButton.setBackgroundImage(UIImage.imageWithColor(color: k62CC74Color), for: UIControl.State.normal)
  105. useButton.setTitleColor(kEnabledTitleColor, for: UIControl.State.normal)
  106. useButton.layer.cornerRadius = 13
  107. useButton.layer.masksToBounds = true
  108. useButton.rx.tap.subscribe(onNext: { [weak self] in
  109. if let useClickClosure = self?.useClickClosure {
  110. useClickClosure()
  111. }
  112. }).disposed(by: disposeBag)
  113. return useButton
  114. }()
  115. }