MusicPlaylistContainerViewController.swift 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. //
  2. // MusicContainerViewController.swift
  3. // DiaryWallPaper
  4. //
  5. // Created by 倪锴伦 on 2025/1/20.
  6. //
  7. import BetterSegmentedControl
  8. import Foundation
  9. import TSVideoKit
  10. class MusicPlaylistContainerViewController: LWBGViewController {
  11. lazy var navBar: LWRightNavigationBar = {
  12. let bar = LWRightNavigationBar()
  13. bar.iconView.image = .init(named: "ic_nav_playlist")
  14. return bar
  15. }()
  16. lazy var searchBar: MusicSearchBar = MusicSearchBar()
  17. weak var importMenuView: BubbleMenuView?
  18. lazy var importButton: UIButton = {
  19. let bt = UIButton(frame: CGRect(x: 0, y: 0, width: 42, height: 42))
  20. bt.setImage(.icNavImport, for: .normal)
  21. return bt
  22. }()
  23. lazy var playlistVc: PlaylistViewController = PlaylistViewController()
  24. var viewModel: MusicContainerViewModel = MusicContainerViewModel()
  25. lazy var guideBubble: GuideBubbleView = {
  26. let guide = GuideBubbleView()
  27. guide.addTarget(self, action: #selector(dismissGuideBubble), for: .touchUpInside)
  28. guide.tapArea.addTarget(self, action: #selector(bubbleClick), for: .touchUpInside)
  29. return guide
  30. }()
  31. override func viewDidLoad() {
  32. super.viewDidLoad()
  33. bgImageView.image = .viewMainBg
  34. addTargets()
  35. }
  36. override func addNotifaction() {
  37. super.addNotifaction()
  38. }
  39. override func viewWillAppear(_ animated: Bool) {
  40. super.viewWillAppear(animated)
  41. PlayerManager.shared.rootVc?.moveUpMiniBar()
  42. }
  43. override func viewDidLayoutSubviews() {
  44. super.viewDidLayoutSubviews()
  45. }
  46. func addTargets() {
  47. searchBar.addTarget(self, action: #selector(showSearchViewController), for: .touchUpInside)
  48. importButton.addTarget(self, action: #selector(showImportMenuView), for: .touchUpInside)
  49. }
  50. @objc func showImportMenuView() {
  51. let menuView = BubbleMenuView()
  52. menuView.position = FitManager.isAr ? .topLeft : .topRight
  53. menuView.actionHanlder = { type in
  54. self.menuClick(type: type)
  55. }
  56. view.addSubview(menuView)
  57. menuView.snp.makeConstraints { make in
  58. make.trailing.equalToSuperview().offset(-16)
  59. make.top.equalTo(self.importButton.snp.bottom).offset(0)
  60. }
  61. importMenuView = menuView
  62. }
  63. func menuClick(type: ImportSource) {
  64. importMenuView?.removeFromSuperview()
  65. if type == .library {
  66. ImportFilesManager.shared.openPhotoLibrary(parent: self)
  67. } else if type == .file {
  68. ImportFilesManager.shared.openFileDocument(parent: self, completion: nil)
  69. }
  70. }
  71. @objc func bubbleClick() {
  72. showSearchViewController()
  73. dismissGuideBubble()
  74. }
  75. @objc func dismissGuideBubble() {
  76. guideBubble.isHidden = true
  77. UserDefaults.standard.setValue("Guide", forKey: "GuideKey")
  78. }
  79. @objc func showSearchViewController() {
  80. let vc = LocalSearchViewController()
  81. vc.hidesBottomBarWhenPushed = true
  82. navigationController?.pushViewController(vc, animated: true)
  83. }
  84. override func addChildren() {
  85. super.addChildren()
  86. view.addSubview(navBar)
  87. navBar.appendRightItem(item: importButton)
  88. view.addSubview(searchBar)
  89. view.addSubview(playlistVc.view)
  90. addChild(playlistVc)
  91. playlistVc.didMove(toParent: self)
  92. }
  93. override func makeConstarints() {
  94. super.makeConstarints()
  95. navBar.snp.makeConstraints { make in
  96. make.top.equalTo(view.safeAreaLayoutGuide.snp.top)
  97. make.horizontalEdges.equalToSuperview()
  98. make.height.equalTo(k_Height_NavBar)
  99. }
  100. searchBar.snp.makeConstraints { make in
  101. make.top.equalTo(navBar.snp.bottom)
  102. make.horizontalEdges.equalToSuperview().inset(16)
  103. make.height.equalTo(44)
  104. }
  105. playlistVc.view.snp.makeConstraints { make in
  106. make.top.equalTo(searchBar.snp.bottom).offset(8)
  107. make.bottom.equalTo(view.safeAreaLayoutGuide.snp.bottom)
  108. make.left.right.equalToSuperview()
  109. }
  110. }
  111. }