CWOperateViewController.swift 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. //
  2. // CWOperateViewController.swift
  3. // ColorfulWallpaper
  4. //
  5. // Created by ni on 2024/9/19.
  6. //
  7. import Foundation
  8. import TSVideoKit
  9. enum CWOperateType {
  10. case like
  11. case addPlaylist
  12. case share
  13. case deleteVideo
  14. case rename
  15. case deletePlaylist
  16. case removeFromPlaylist
  17. }
  18. class CWOperateViewController: LWBaseViewController {
  19. var operteItem: TSVideo?
  20. var playlist: TSPlayList?
  21. var disAppearArea: UIControl = .init()
  22. lazy var songlistCell: OperateTopView = OperateTopView()
  23. lazy var bgView: UIView = .simpleView(color: .hexColor("#222222"))
  24. lazy var vStack: UIStackView = .vStack
  25. lazy var likeItem: CWOperateItemView = .init(imgName: "ic_like_n", title: "Add to like".localized(), type: .like)
  26. lazy var addPlaylistItem: CWOperateItemView = .init(imgName: "ic_add_playlist", title: "Add to Playlist".localized(), type: .addPlaylist)
  27. lazy var removeFromPlaylist: CWOperateItemView = .init(imgName: "ic_remove_playlist", title: "Remove from playlist".localized(), type: .removeFromPlaylist)
  28. lazy var shareItem: CWOperateItemView = .init(imgName: "ic_share", title: "Share".localized(), type: .share)
  29. lazy var deleteItem: CWOperateItemView = .init(imgName: "ic_delete", title: "Delete".localized(), type: .deleteVideo)
  30. var types: [CWOperateType] = [.like, .addPlaylist, .share, .deleteVideo]
  31. lazy var cancelButton: UIButton = {
  32. let btn = UIButton()
  33. btn.setTitle("Cancel".localized(), for: .normal)
  34. btn.setTitleColor(.white, for: .normal)
  35. btn.titleLabel?.font = .systemFont14
  36. btn.addTarget(self, action: #selector(dismissCurrentVc), for: .touchUpInside)
  37. return btn
  38. }()
  39. @objc func dismissCurrentVc() {
  40. dismiss(animated: true)
  41. }
  42. init(types: [CWOperateType] = [.like, .addPlaylist, .share, .deleteVideo]) {
  43. super.init(nibName: nil, bundle: nil)
  44. self.types = types
  45. }
  46. required init?(coder: NSCoder) {
  47. fatalError("init(coder:) has not been implemented")
  48. }
  49. override func viewDidLoad() {
  50. if let model = operteItem {
  51. songlistCell.bindData(video: model)
  52. }
  53. super.viewDidLoad()
  54. addTargets()
  55. updateLikeInfo(item: likeItem)
  56. }
  57. override func addChildren() {
  58. super.addChildren()
  59. view.backgroundColor = .black.withAlphaComponent(0.4)
  60. view.addSubview(disAppearArea)
  61. bgView.layer.cornerRadius = 16
  62. bgView.layer.masksToBounds = true
  63. view.addSubview(bgView)
  64. bgView.addSubview(songlistCell)
  65. bgView.addSubview(vStack)
  66. vStack.addArrangedSubview(likeItem)
  67. vStack.addArrangedSubview(addPlaylistItem)
  68. vStack.addArrangedSubview(removeFromPlaylist)
  69. vStack.addArrangedSubview(shareItem)
  70. vStack.addArrangedSubview(deleteItem)
  71. vStack.addArrangedSubview(cancelButton)
  72. vStack.arrangedSubviews.forEach {
  73. if let item = $0 as? CWOperateItemView, types.contains(item.type) {
  74. $0.isHidden = false
  75. } else {
  76. $0.isHidden = true
  77. }
  78. }
  79. }
  80. override func makeConstarints() {
  81. super.makeConstarints()
  82. disAppearArea.snp.makeConstraints { make in
  83. make.leading.trailing.top.equalToSuperview()
  84. make.bottom.equalTo(bgView.snp.top)
  85. }
  86. bgView.snp.makeConstraints { make in
  87. make.bottom.leading.trailing.equalToSuperview()
  88. }
  89. songlistCell.snp.makeConstraints { make in
  90. make.height.equalTo(64)
  91. make.top.leading.trailing.equalToSuperview()
  92. }
  93. vStack.snp.makeConstraints { make in
  94. make.top.equalTo(songlistCell.snp.bottom)
  95. make.leading.trailing.equalToSuperview()
  96. make.bottom.equalTo(view.safeAreaLayoutGuide.snp.bottom)
  97. }
  98. cancelButton.snp.makeConstraints { make in
  99. make.height.equalTo(44)
  100. }
  101. }
  102. func updateLikeInfo(item: CWOperateItemView) {
  103. let favIcon = operteItem?.isFavorite == true ? UIImage(
  104. named: "ic_like_s") : UIImage(named: "ic_like")
  105. item.iconView.image = favIcon
  106. item.titleLabel.text = operteItem?.isFavorite == true ? "Remove from like".localized() : "Add to like".localized()
  107. }
  108. }