PQCustomSpeedSettingView.swift 9.9 KB

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