PQCustomSpeedSettingView.swift 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. //
  2. // PQCustomSpeedSettingView.swift
  3. // BFFramework
  4. //
  5. // Created by ak on 2021/8/3.
  6. // 功能:自定义速度界面
  7. import Foundation
  8. class PQCustomSpeedSettingView: UIView {
  9. // 左上角返回
  10. lazy var backBtn: BFUIButton = {
  11. let backBtn = BFUIButton(type: .custom)
  12. backBtn.addTarget(self, action: #selector(backClick(sender:)), for: .touchUpInside)
  13. backBtn.setImage(UIImage().BF_Image(named: "customSpeedClosed"), for: .normal)
  14. backBtn.adjustsImageWhenHighlighted = false
  15. return backBtn
  16. }()
  17. // 标题
  18. public lazy var titleLab: UILabel = {
  19. let titleLab = UILabel()
  20. titleLab.font = UIFont.systemFont(ofSize: 14, weight: .medium)
  21. titleLab.textAlignment = .center
  22. titleLab.text = "自定义快慢速"
  23. titleLab.textColor = UIColor.hexColor(hexadecimal: "#353535")
  24. return titleLab
  25. }()
  26. // 确定
  27. public lazy var confirmBtn: UIButton = {
  28. let confirmBtn = UIButton(type: .custom)
  29. confirmBtn.setTitle("确定", for: .normal)
  30. confirmBtn.setTitleColor(.white, for: .normal)
  31. confirmBtn.addTarget(self, action: #selector(confirmClick(sender:)), for: .touchUpInside)
  32. confirmBtn.backgroundColor = UIColor.hexColor(hexadecimal: PQBFConfig.shared.styleColor.rawValue)
  33. confirmBtn.titleLabel?.font = UIFont.systemFont(ofSize: 17, weight: .medium)
  34. confirmBtn.addCorner(corner: 11)
  35. return confirmBtn
  36. }()
  37. // 取消
  38. public lazy var cancleBtn: UIButton = {
  39. let cancleBtn = UIButton(type: .custom)
  40. cancleBtn.setTitle("取消", for: .normal)
  41. cancleBtn.setTitleColor(UIColor.hexColor(hexadecimal: PQBFConfig.shared.styleColor.rawValue), for: .normal)
  42. cancleBtn.backgroundColor = UIColor.hexColor(hexadecimal: "#F9F9F9")
  43. cancleBtn.addTarget(self, action: #selector(backClick(sender:)), for: .touchUpInside)
  44. cancleBtn.titleLabel?.font = UIFont.systemFont(ofSize: 17, weight: .medium)
  45. cancleBtn.addCorner(corner: 11)
  46. return cancleBtn
  47. }()
  48. // 提示1
  49. lazy var customSpeedFastView: UIImageView = {
  50. let customSpeedFastView = UIImageView(image: UIImage().BF_Image(named: "customSpeedFast"))
  51. return customSpeedFastView
  52. }()
  53. // 提示2
  54. lazy var customSpeedSlowView: UIImageView = {
  55. let customSpeedSlowView = UIImageView(image: UIImage().BF_Image(named: "customSpeedSlow"))
  56. return customSpeedSlowView
  57. }()
  58. lazy var fastSlider: BFUISlider = {
  59. let fastSlider = BFUISlider()
  60. let thbImage = UIImage().BF_Image(named: "sliderTHBPin")
  61. fastSlider.setMinimumTrackImage(thbImage, for: .normal)
  62. fastSlider.setMaximumTrackImage(thbImage, for: .normal)
  63. fastSlider.setThumbImage(thbImage, for: .highlighted)
  64. fastSlider.setThumbImage(thbImage, for: .normal)
  65. fastSlider.maximumTrackTintColor = UIColor.hexColor(hexadecimal: "#E6E8E8")
  66. fastSlider.minimumTrackTintColor = UIColor.hexColor(hexadecimal: PQBFConfig.shared.styleColor.rawValue)
  67. fastSlider.tag = 10
  68. // speechSlidView.addTarget(self, action: #selector(sliderTouchEnded(sender:)), for: .touchUpInside)
  69. fastSlider.maximumValue = 8
  70. fastSlider.minimumValue = 0.2
  71. fastSlider.valueTextColor = UIColor.hexColor(hexadecimal: PQBFConfig.shared.styleColor.rawValue)
  72. fastSlider.value = 0.2
  73. return fastSlider
  74. }()
  75. lazy var slowSlider: BFUISlider = {
  76. let slowSlider = BFUISlider()
  77. let thbImage = UIImage().BF_Image(named: "sliderTHBPin")
  78. slowSlider.setMinimumTrackImage(thbImage, for: .normal)
  79. slowSlider.setMaximumTrackImage(thbImage, for: .normal)
  80. slowSlider.setThumbImage(thbImage, for: .highlighted)
  81. slowSlider.setThumbImage(thbImage, for: .normal)
  82. slowSlider.maximumTrackTintColor = UIColor.hexColor(hexadecimal: "#E6E8E8")
  83. slowSlider.minimumTrackTintColor = UIColor.hexColor(hexadecimal: PQBFConfig.shared.styleColor.rawValue)
  84. slowSlider.tag = 10
  85. // speechSlidView.addTarget(self, action: #selector(sliderTouchEnded(sender:)), for: .touchUpInside)
  86. slowSlider.maximumValue = 4
  87. slowSlider.minimumValue = 0.2
  88. slowSlider.valueTextColor = UIColor.hexColor(hexadecimal: PQBFConfig.shared.styleColor.rawValue)
  89. slowSlider.value = 0.2
  90. return slowSlider
  91. }()
  92. lazy var jumpSpeedSlider: BFUISlider = {
  93. let jumpSpeedSlider = BFUISlider()
  94. let thbImage = UIImage().BF_Image(named: "sliderTHBPin")
  95. jumpSpeedSlider.setMinimumTrackImage(thbImage, for: .normal)
  96. jumpSpeedSlider.setMaximumTrackImage(thbImage, for: .normal)
  97. jumpSpeedSlider.setThumbImage(thbImage, for: .highlighted)
  98. jumpSpeedSlider.setThumbImage(thbImage, for: .normal)
  99. jumpSpeedSlider.maximumTrackTintColor = UIColor.hexColor(hexadecimal: "#E6E8E8")
  100. jumpSpeedSlider.minimumTrackTintColor = UIColor.hexColor(hexadecimal: PQBFConfig.shared.styleColor.rawValue)
  101. jumpSpeedSlider.tag = 10
  102. // speechSlidView.addTarget(self, action: #selector(sliderTouchEnded(sender:)), for: .touchUpInside)
  103. jumpSpeedSlider.maximumValue = 10
  104. jumpSpeedSlider.minimumValue = 1
  105. jumpSpeedSlider.valueTextColor = UIColor.hexColor(hexadecimal: PQBFConfig.shared.styleColor.rawValue)
  106. jumpSpeedSlider.value = 1
  107. return jumpSpeedSlider
  108. }()
  109. // 跳跃卡点 和快慢速模式 UI 不一样
  110. var isJumpSpeedModel: Bool = false {
  111. didSet {
  112. showHiddenView()
  113. titleLab.text = isJumpSpeedModel ? "自定义跳跃快慢速" : "自定义快慢速"
  114. }
  115. }
  116. // 点击完成回调
  117. public var selectSpeedCallBack: ((_ fastSpeed: Float, _ slowSpeed: Float, _ isJumpSpeedModel: Bool) -> Void)?
  118. override init(frame: CGRect) {
  119. super.init(frame: frame)
  120. backgroundColor = .white
  121. layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.15).cgColor
  122. layer.shadowOpacity = 1
  123. layer.shadowOffset = CGSize(width: 0, height: -6)
  124. layer.shadowRadius = 30
  125. // 切圆角
  126. layer.cornerRadius = 15
  127. addSubview(backBtn)
  128. addSubview(titleLab)
  129. addSubview(confirmBtn)
  130. addSubview(cancleBtn)
  131. addSubview(customSpeedFastView)
  132. addSubview(customSpeedSlowView)
  133. addSubview(fastSlider)
  134. addSubview(slowSlider)
  135. addSubview(jumpSpeedSlider)
  136. autolayout()
  137. showHiddenView()
  138. }
  139. required init?(coder _: NSCoder) {
  140. fatalError("init(coder:) has not been implemented")
  141. }
  142. func showHiddenView() {
  143. customSpeedFastView.isHidden = isJumpSpeedModel
  144. customSpeedSlowView.isHidden = isJumpSpeedModel
  145. fastSlider.isHidden = isJumpSpeedModel
  146. slowSlider.isHidden = isJumpSpeedModel
  147. jumpSpeedSlider.isHidden = !isJumpSpeedModel
  148. }
  149. func autolayout() {
  150. backBtn.snp.makeConstraints { make in
  151. make.height.width.equalTo(24)
  152. make.left.equalToSuperview().offset(16)
  153. make.top.equalToSuperview().offset(10)
  154. }
  155. titleLab.snp.makeConstraints { make in
  156. make.height.equalTo(20)
  157. make.width.equalTo(150)
  158. make.centerX.equalToSuperview()
  159. make.top.equalToSuperview().offset(10)
  160. }
  161. cancleBtn.snp.makeConstraints { make in
  162. make.height.equalTo(50)
  163. make.width.equalTo(61)
  164. make.left.equalToSuperview().offset(19)
  165. make.bottom.equalToSuperview().offset(-60)
  166. }
  167. confirmBtn.snp.makeConstraints { make in
  168. make.height.equalTo(50)
  169. make.width.equalTo(254)
  170. make.right.equalToSuperview().offset(-30)
  171. make.top.equalTo(cancleBtn.snp_top)
  172. }
  173. customSpeedFastView.snp.makeConstraints { make in
  174. make.height.width.equalTo(30)
  175. make.left.equalToSuperview().offset(18)
  176. make.top.equalToSuperview().offset(98)
  177. }
  178. customSpeedSlowView.snp.makeConstraints { make in
  179. make.height.width.equalTo(30)
  180. make.left.equalTo(customSpeedFastView.snp_left)
  181. make.top.equalTo(customSpeedFastView.snp_bottom).offset(31)
  182. }
  183. fastSlider.snp.makeConstraints { make in
  184. make.left.equalToSuperview().offset(65)
  185. make.right.equalToSuperview().offset(-36)
  186. make.centerY.equalTo(customSpeedFastView.snp_centerY)
  187. }
  188. slowSlider.snp.makeConstraints { make in
  189. make.left.equalToSuperview().offset(65)
  190. make.right.equalToSuperview().offset(-36)
  191. make.centerY.equalTo(customSpeedSlowView.snp_centerY)
  192. }
  193. jumpSpeedSlider.snp.makeConstraints { make in
  194. make.left.equalToSuperview().offset(30)
  195. make.right.equalToSuperview().offset(-36)
  196. make.top.equalTo(titleLab.snp_bottom).offset(104)
  197. }
  198. }
  199. // 返回
  200. @objc func backClick(sender _: UIButton) {
  201. isHidden = true
  202. }
  203. // 确认
  204. @objc func confirmClick(sender _: UIButton) {
  205. isHidden = true
  206. BFLog(message: "fastSlider: \(fastSlider.value) slowSlider: \(slowSlider.value) jumpSpeedSlider:\(jumpSpeedSlider.value)")
  207. if selectSpeedCallBack != nil {
  208. if !isJumpSpeedModel {
  209. selectSpeedCallBack!(fastSlider.value, slowSlider.value, isJumpSpeedModel)
  210. } else {
  211. selectSpeedCallBack!(jumpSpeedSlider.value, 0, isJumpSpeedModel)
  212. }
  213. }
  214. }
  215. }