OperateTopView.swift 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. //
  2. // OperateTopView.swift
  3. // TSLiveWallpaper
  4. //
  5. // Created by nkl on 2024/12/23.
  6. //
  7. import Foundation
  8. import TSVideoKit
  9. import UIKit
  10. class OperateTopView: UIView {
  11. lazy var hStack: UIStackView = {
  12. let stack: UIStackView = .hStack
  13. stack.spacing = 14
  14. return stack
  15. }()
  16. lazy var raduiButton: UIButton = {
  17. let btn = UIButton()
  18. btn.setImage(UIImage(named: "ic_mine_ring_mutil_unselect"), for: .normal)
  19. btn.setImage(UIImage(named: "ic_mine_ring_mutil_select"), for: .selected)
  20. btn.isHidden = true
  21. btn.isUserInteractionEnabled = false
  22. return btn
  23. }()
  24. lazy var bgView: UIView = .simpleView(color: .clear)
  25. lazy var bgImageView: UIImageView = .simpleImage(imageName: "ic_minibar_bg")
  26. lazy var lineView: UIView = .simpleView(color: .white.withAlphaComponent(0.1))
  27. lazy var iconView: UIImageView = {
  28. let img: UIImageView = .init(image: UIImage(named: ""))
  29. img.cornerRadius = 8
  30. img.contentMode = .scaleAspectFill
  31. return img
  32. }()
  33. lazy var titleLabel: UILabel = .simpleLabel(text: "", color: .white)
  34. lazy var timeLabel: UILabel = .simpleLabel(text: "UnKnown".localized(), color: .white.withAlphaComponent(0.4))
  35. lazy var stackView: UIStackView = {
  36. let stack: UIStackView = .vStack
  37. stack.spacing = 8
  38. return stack
  39. }()
  40. private var mVideo: TSVideo?
  41. var mPlaylist: TSPlayList?
  42. override init(frame: CGRect) {
  43. super.init(frame: frame)
  44. backgroundColor = .clear
  45. addChildren()
  46. makeConstraints()
  47. }
  48. func bindData(video: TSVideo, isMutiSelected: Bool = false, isSelected: Bool = false, needOperate: Bool = false) {
  49. mVideo = video
  50. let isPlaying = mVideo?.videoId == PlayerManager.shared.currentVideo?.videoId
  51. // titleLabel.textColor = isPlaying ? .hexColor("#89FC42") : .white
  52. // timeLabel.textColor = (isPlaying ? UIColor.hexColor("#89FC42") : .white).withAlphaComponent(0.4)
  53. titleLabel.text = video.title
  54. if let artist = video.artist {
  55. timeLabel.text = artist.isEmpty == true ? "UnKnown".localized() : video.artist
  56. } else {
  57. timeLabel.text = "UnKnown".localized()
  58. }
  59. if video.isOnline {
  60. iconView.kf.setImage(with: video.iconUrl, placeholder: UIImage(named: "ic_default"))
  61. } else {
  62. if let imgData = video.artwork {
  63. iconView.image = UIImage(data: imgData)
  64. } else {
  65. iconView.image = UIImage(named: "ic_default")
  66. }
  67. }
  68. if PlayerManager.shared.currentVideo?.videoId == video.videoId {
  69. bgImageView.isHidden = false
  70. } else {
  71. bgImageView.isHidden = true
  72. }
  73. raduiButton.isHidden = !isMutiSelected
  74. raduiButton.isSelected = isSelected
  75. }
  76. func addChildren() {
  77. addSubview(hStack)
  78. hStack.addArrangedSubview(bgView)
  79. hStack.addArrangedSubview(raduiButton)
  80. bgView.addSubview(bgImageView)
  81. bgView.addSubview(iconView)
  82. bgView.addSubview(stackView)
  83. stackView.addArrangedSubview(titleLabel)
  84. stackView.addArrangedSubview(timeLabel)
  85. addSubview(lineView)
  86. }
  87. func makeConstraints() {
  88. hStack.snp.makeConstraints { make in
  89. make.horizontalEdges.equalToSuperview().inset(16)
  90. make.verticalEdges.equalToSuperview().inset(8)
  91. }
  92. raduiButton.snp.makeConstraints { make in
  93. make.width.equalTo(24)
  94. }
  95. bgImageView.snp.makeConstraints { make in
  96. make.edges.equalToSuperview()
  97. }
  98. iconView.snp.makeConstraints { make in
  99. make.leading.equalToSuperview()
  100. make.width.height.equalTo(56)
  101. }
  102. stackView.snp.makeConstraints { make in
  103. make.leading.equalTo(iconView.snp.trailing).offset(16)
  104. make.centerY.equalTo(iconView)
  105. make.trailing.equalToSuperview().offset(-12)
  106. }
  107. lineView.snp.makeConstraints { make in
  108. make.bottom.equalToSuperview()
  109. make.horizontalEdges.equalToSuperview().inset(16)
  110. make.height.equalTo(1)
  111. }
  112. }
  113. required init?(coder: NSCoder) {
  114. fatalError("init(coder:) has not been implemented")
  115. }
  116. }