PublishNewMusicListViewTableViewCell.swift 4.8 KB

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