PQCustomSpeedSettingView.swift 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  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. // view 初化的类型 1, 快慢速度卡点 2,跳跃卡点 ,3,循环设置
  110. var viewType: Int = 0 {
  111. didSet{
  112. showHiddenView()
  113. if(viewType == 1){
  114. titleLab.text = "自定义快慢速"
  115. }else if(viewType == 2){
  116. titleLab.text = "自定义跳跃快慢速"
  117. }else if(viewType == 3){
  118. titleLab.text = "自定义循环"
  119. jumpSpeedSlider.maximumValue = 20
  120. jumpSpeedSlider.valueIsInt = true
  121. }
  122. }
  123. }
  124. // 点击完成回调
  125. public var selectSpeedCallBack: ((_ fastSpeed: Float, _ slowSpeed: Float, _ viewType: Int , _ isCancle :Bool) -> Void)?
  126. override init(frame: CGRect) {
  127. super.init(frame: frame)
  128. backgroundColor = .white
  129. layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.15).cgColor
  130. layer.shadowOpacity = 1
  131. layer.shadowOffset = CGSize(width: 0, height: -6)
  132. layer.shadowRadius = 30
  133. // 切圆角
  134. layer.cornerRadius = 15
  135. addSubview(backBtn)
  136. addSubview(titleLab)
  137. addSubview(confirmBtn)
  138. addSubview(cancleBtn)
  139. addSubview(customSpeedFastView)
  140. addSubview(customSpeedSlowView)
  141. addSubview(fastSlider)
  142. addSubview(slowSlider)
  143. addSubview(jumpSpeedSlider)
  144. autolayout()
  145. showHiddenView()
  146. self.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(panGes(_:))))
  147. }
  148. required init?(coder _: NSCoder) {
  149. fatalError("init(coder:) has not been implemented")
  150. }
  151. deinit {
  152. BFLog(1, message: "custom speed setting view release")
  153. }
  154. @objc func panGes(_ ges:UIPanGestureRecognizer){
  155. }
  156. func showHiddenView() {
  157. customSpeedFastView.isHidden = !(viewType == 1)
  158. customSpeedSlowView.isHidden = !(viewType == 1)
  159. fastSlider.isHidden = !(viewType == 1)
  160. slowSlider.isHidden = !(viewType == 1)
  161. jumpSpeedSlider.isHidden = (viewType == 1)
  162. }
  163. func autolayout() {
  164. backBtn.snp.makeConstraints { make in
  165. make.height.width.equalTo(24)
  166. make.left.equalToSuperview().offset(16)
  167. make.top.equalToSuperview().offset(10)
  168. }
  169. titleLab.snp.makeConstraints { make in
  170. make.height.equalTo(20)
  171. make.width.equalTo(150)
  172. make.centerX.equalToSuperview()
  173. make.top.equalToSuperview().offset(10)
  174. }
  175. cancleBtn.snp.makeConstraints { make in
  176. make.height.equalTo(50)
  177. make.width.equalTo(61)
  178. make.left.equalToSuperview().offset(19)
  179. make.bottom.equalToSuperview().offset(-60)
  180. }
  181. confirmBtn.snp.makeConstraints { make in
  182. make.height.equalTo(50)
  183. make.width.equalTo(254)
  184. make.right.equalToSuperview().offset(-30)
  185. make.top.equalTo(cancleBtn.snp_top)
  186. }
  187. customSpeedFastView.snp.makeConstraints { make in
  188. make.height.width.equalTo(30)
  189. make.left.equalToSuperview().offset(18)
  190. make.top.equalToSuperview().offset(98)
  191. }
  192. customSpeedSlowView.snp.makeConstraints { make in
  193. make.height.width.equalTo(30)
  194. make.left.equalTo(customSpeedFastView.snp_left)
  195. make.top.equalTo(customSpeedFastView.snp_bottom).offset(31)
  196. }
  197. fastSlider.snp.makeConstraints { make in
  198. make.left.equalToSuperview().offset(65)
  199. make.right.equalToSuperview().offset(-36)
  200. make.centerY.equalTo(customSpeedFastView.snp_centerY)
  201. }
  202. slowSlider.snp.makeConstraints { make in
  203. make.left.equalToSuperview().offset(65)
  204. make.right.equalToSuperview().offset(-36)
  205. make.centerY.equalTo(customSpeedSlowView.snp_centerY)
  206. }
  207. jumpSpeedSlider.snp.makeConstraints { make in
  208. make.left.equalToSuperview().offset(30)
  209. make.right.equalToSuperview().offset(-36)
  210. make.top.equalTo(titleLab.snp_bottom).offset(104)
  211. }
  212. }
  213. // 返回
  214. @objc func backClick(sender _: UIButton) {
  215. isHidden = true
  216. selectSpeedCallBack!(jumpSpeedSlider.value, 0, viewType,true)
  217. }
  218. // 确认
  219. @objc func confirmClick(sender _: UIButton) {
  220. isHidden = true
  221. BFLog(message: "fastSlider: \(fastSlider.value.decimalNumber()) slowSlider: \(slowSlider.value.decimalNumber()) jumpSpeedSlider:\(jumpSpeedSlider.value.decimalNumber(0))")
  222. if selectSpeedCallBack != nil {
  223. if(viewType == 1){
  224. selectSpeedCallBack!(fastSlider.value.decimalNumber(), slowSlider.value.decimalNumber(), viewType,false)
  225. }else{
  226. selectSpeedCallBack!(jumpSpeedSlider.value.decimalNumber(0), 0, viewType,false)
  227. }
  228. }
  229. }
  230. }