LWPlayerControlView.swift 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. //
  2. // LWPlayerControlView.swift
  3. // SwiftBilibili
  4. //
  5. // Created by 罗文 on 2021/3/30.
  6. // Copyright © 2021年 罗文. All rights reserved.
  7. //
  8. import UIKit
  9. class LWPlayerControlView: UIView {
  10. lazy var topView: UIImageView = {
  11. let topView = UIImageView()
  12. topView.backgroundColor = UIColor.black.withAlphaComponent(0.5)
  13. return topView
  14. }()
  15. lazy var bottomView: UIImageView = {
  16. let bottomView = UIImageView()
  17. bottomView.backgroundColor = UIColor.black.withAlphaComponent(0.5)
  18. return bottomView
  19. }()
  20. lazy var backButton: UIButton = {
  21. let backButton = UIButton()
  22. return backButton
  23. }()
  24. lazy var titleLabel: UILabel = {
  25. let titleLabel = UILabel()
  26. titleLabel.textColor = UIColor.white
  27. return titleLabel
  28. }()
  29. lazy var pauseButton: UIButton = {
  30. let pauseButton = UIButton()
  31. return pauseButton
  32. }()
  33. lazy var currentTimeLabel: UILabel = {
  34. let currentTimeLabel = UILabel()
  35. currentTimeLabel.textColor = UIColor.white
  36. currentTimeLabel.font = UIFont.systemFont(ofSize: 13)
  37. return currentTimeLabel
  38. }()
  39. lazy var totalTimeLabel: UILabel = {
  40. let totalTimeLabel = UILabel()
  41. totalTimeLabel.textColor = UIColor.white
  42. totalTimeLabel.font = UIFont.systemFont(ofSize: 13)
  43. return totalTimeLabel
  44. }()
  45. lazy var timeSlider: LWPlayerSlider = {
  46. let timeSlider = LWPlayerSlider()
  47. return timeSlider
  48. }()
  49. lazy var fullScreenButton: UIButton = {
  50. let fullScreenButton = UIButton()
  51. return fullScreenButton
  52. }()
  53. weak var player: LWPlayer?
  54. override init(frame: CGRect) {
  55. super.init(frame: frame)
  56. addSubview(topView)
  57. addSubview(bottomView)
  58. topView.addSubview(backButton)
  59. topView.addSubview(titleLabel)
  60. bottomView.addSubview(pauseButton)
  61. bottomView.addSubview(currentTimeLabel)
  62. bottomView.addSubview(timeSlider)
  63. bottomView.addSubview(totalTimeLabel)
  64. bottomView.addSubview(fullScreenButton)
  65. }
  66. required init?(coder aDecoder: NSCoder) {
  67. fatalError("init(coder:) has not been implemented")
  68. }
  69. override func layoutSubviews() {
  70. super.layoutSubviews()
  71. topView.snp.makeConstraints { (make) in
  72. make.left.right.top.equalToSuperview()
  73. make.height.equalTo(50)
  74. }
  75. bottomView.snp.makeConstraints { (make) in
  76. make.left.right.bottom.equalToSuperview()
  77. make.height.equalTo(50)
  78. }
  79. backButton.snp.makeConstraints { (make) in
  80. make.left.equalTo(10).priority(750)
  81. make.centerY.equalToSuperview()
  82. }
  83. titleLabel.snp.makeConstraints { (make) in
  84. make.left.equalTo(backButton.snp.right).offset(10).priority(1000)
  85. make.centerY.equalToSuperview()
  86. }
  87. pauseButton.snp.makeConstraints { (make) in
  88. make.left.equalTo(backButton)
  89. make.centerY.equalToSuperview()
  90. }
  91. currentTimeLabel.snp.makeConstraints { (make) in
  92. make.left.equalTo(pauseButton.snp.right).offset(10)
  93. make.centerY.equalToSuperview()
  94. }
  95. fullScreenButton.snp.makeConstraints { (make) in
  96. make.right.equalTo(-10)
  97. make.centerY.equalToSuperview()
  98. }
  99. totalTimeLabel.snp.makeConstraints { (make) in
  100. make.right.equalTo(fullScreenButton.snp.left).offset(-10)
  101. make.centerY.equalToSuperview()
  102. }
  103. timeSlider.snp.makeConstraints { (make) in
  104. make.left.equalTo(currentTimeLabel.snp.right).offset(5)
  105. make.right.equalTo(totalTimeLabel.snp.left).offset(-5)
  106. make.centerY.equalToSuperview()
  107. }
  108. }
  109. }
  110. extension LWPlayerControlView: LWPlayerDelegate {
  111. func player(_ player: LWPlayer, playerStateDidChange state: LWPlayerState) {
  112. }
  113. func player(_ player: LWPlayer, playerDisplayModeDidChange displayMode: LWPlayerDisplayMode) {
  114. }
  115. func player(_ player: LWPlayer, loadedTimeDidChange bufferDuration: TimeInterval, totalDuration: TimeInterval) {
  116. timeSlider.setProgress(Float(bufferDuration/totalDuration), animated: true)
  117. }
  118. func player(_ player: LWPlayer, playedTimeDidChange currentTime: TimeInterval, totalDuration: TimeInterval) {
  119. timeSlider.maximumValue = Float(totalDuration)
  120. timeSlider.value = Float(currentTime)
  121. }
  122. func player(_ player: LWPlayer, showLoading: Bool) {
  123. }
  124. }