PQCustomSpeedSettingView.swift 11 KB

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