PlayDetailListViewContoller.swift 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. //
  2. // PlayDetaiListViewContoller.swift
  3. // ColorfulWallpaper
  4. //
  5. // Created by ni on 2024/9/19.
  6. //
  7. import Foundation
  8. import UIKit
  9. class PlayDetailListViewContoller: UIViewController, UITableViewDelegate {
  10. lazy var bgView: UIView = .simpleView(color: .hexColor("#222222"))
  11. lazy var tapArea: UIControl = {
  12. let area = UIControl()
  13. area.addTarget(self, action: #selector(dismissCurrentVc), for: .touchUpInside)
  14. return area
  15. }()
  16. lazy var lineView: UIView = {
  17. let line: UIView = .simpleView(color: .white.withAlphaComponent(0.2))
  18. line.cornerRadius = 2
  19. return line
  20. }()
  21. lazy var titleLabel: UILabel = .simpleLabel(text: "Up Next".localized(),font: .font(size: 18), color: .white)
  22. var viewModel: PlayDetailListViewModel = .init()
  23. lazy var listView: UITableView = {
  24. let tabView = UITableView()
  25. tabView.dataSource = viewModel
  26. tabView.delegate = self
  27. tabView.separatorStyle = .none
  28. tabView.register(PlayDetailListViewCell
  29. .self, forCellReuseIdentifier: "PlayDetailListViewCell")
  30. tabView.backgroundColor = .clear
  31. return tabView
  32. }()
  33. override func viewDidLoad() {
  34. super.viewDidLoad()
  35. addChildren()
  36. makeConstraints()
  37. scrollToCurrentVideo()
  38. }
  39. func addChildren() {
  40. view.backgroundColor = .clear
  41. view.addSubview(tapArea)
  42. view.addSubview(bgView)
  43. bgView.addSubview(lineView)
  44. bgView.addSubview(titleLabel)
  45. bgView.addSubview(listView)
  46. }
  47. func scrollToCurrentVideo() {
  48. DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
  49. if let indexPath = self.viewModel.indexOfCurrentVideo {
  50. self.listView.scrollToRow(at: indexPath, at: .middle, animated: false)
  51. }
  52. }
  53. }
  54. @objc func dismissCurrentVc() {
  55. dismiss(animated: true)
  56. }
  57. func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  58. let count = viewModel.needRecommend ? viewModel.recommendDatas.count : viewModel.videos.count
  59. if indexPath.row < count {
  60. if viewModel.needRecommend {
  61. let data = viewModel.recommendDatas[indexPath.row]
  62. PlayerManager.shared.playVideo(onlineVideo: data, recommendDatas: [], scene: .recommend)
  63. } else {
  64. let video = viewModel.videos[indexPath.row]
  65. PlayerManager.shared.playVideo(video: video,
  66. list: viewModel.videos,
  67. scene: .local,
  68. onceAdKey: "")
  69. }
  70. dismissCurrentVc()
  71. }
  72. }
  73. func makeConstraints() {
  74. tapArea.snp.makeConstraints { make in
  75. make.top.leading.trailing.equalToSuperview()
  76. make.bottom.equalTo(bgView.snp.top)
  77. }
  78. bgView.snp.makeConstraints { make in
  79. make.bottom.leading.trailing.equalToSuperview()
  80. make.height.equalToSuperview().multipliedBy(0.7)
  81. }
  82. lineView.snp.makeConstraints { make in
  83. make.centerX.equalToSuperview()
  84. make.width.equalTo(32)
  85. make.height.equalTo(4)
  86. make.top.equalToSuperview().offset(8)
  87. }
  88. titleLabel.snp.makeConstraints { make in
  89. make.top.equalToSuperview().offset(20)
  90. make.leading.equalToSuperview().offset(16)
  91. }
  92. listView.snp.makeConstraints { make in
  93. make.top.equalTo(titleLabel.snp.bottom).offset(20)
  94. make.leading.trailing.bottom.equalToSuperview()
  95. }
  96. }
  97. override func viewDidLayoutSubviews() {
  98. super.viewDidLayoutSubviews()
  99. bgView.setRectCorner(corner: [.topLeft, .topRight], radii: CGSize(width: 16, height: 16))
  100. }
  101. }