|
@@ -7,6 +7,7 @@
|
|
|
//
|
|
|
|
|
|
import UIKit
|
|
|
+import JXSegmentedView
|
|
|
|
|
|
class PublishEditNewVideoSetView: BaseView {
|
|
|
|
|
@@ -23,6 +24,8 @@ class PublishEditNewVideoSetView: BaseView {
|
|
|
addSubview(speedRegulationButton)
|
|
|
// 播放进度条
|
|
|
addSubview(playProgressView)
|
|
|
+ // 调速的View
|
|
|
+ addSubview(segmentedView)
|
|
|
// 左滑手势
|
|
|
addLeftSwipe()
|
|
|
// 右滑手势
|
|
@@ -74,13 +77,20 @@ class PublishEditNewVideoSetView: BaseView {
|
|
|
|
|
|
// 播放进度View
|
|
|
playProgressView.snp.makeConstraints { (make) in
|
|
|
- make.bottom.equalTo(-25)
|
|
|
+ make.bottom.equalTo(-(kSafeTabBarHeight+30))
|
|
|
make.left.right.equalToSuperview()
|
|
|
make.height.equalTo(20)
|
|
|
}
|
|
|
+
|
|
|
+ // 调速的View
|
|
|
+ segmentedView.snp.makeConstraints { (make) in
|
|
|
+ make.bottom.equalTo(-(98+kSafeTabBarHeight))
|
|
|
+ make.left.equalTo(14)
|
|
|
+ make.right.equalTo(-14)
|
|
|
+ make.height.equalTo(40)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/// 返回按钮
|
|
|
lazy var backButton: UIButton = {
|
|
|
let backButton = UIButton(type: UIButton.ButtonType.custom)
|
|
@@ -115,14 +125,13 @@ class PublishEditNewVideoSetView: BaseView {
|
|
|
lazy var musicButton: UIButton = {
|
|
|
let musicButton = UIButton()
|
|
|
musicButton.setImage(kImage(name: "video_ico_music"), for: UIControl.State.normal)
|
|
|
- musicButton.setImage(kImage(name: "video_ico_music_pre"), for: UIControl.State.highlighted)
|
|
|
+ musicButton.setImage(kImage(name: "video_ico_music_pre"), for: UIControl.State.selected)
|
|
|
musicButton.setTitle("音乐", for: UIControl.State.normal)
|
|
|
musicButton.setTitleColor(kffffffColor, for: UIControl.State.normal)
|
|
|
musicButton.titleLabel?.font = kRegularFont12
|
|
|
return musicButton
|
|
|
}()
|
|
|
|
|
|
-
|
|
|
/// 调速
|
|
|
lazy var speedRegulationButton: UIButton = {
|
|
|
let speedRegulationButton = UIButton()
|
|
@@ -140,6 +149,50 @@ class PublishEditNewVideoSetView: BaseView {
|
|
|
return playProgressView
|
|
|
}()
|
|
|
|
|
|
+ //1.初始化JXSegmentedViewx
|
|
|
+ lazy var segmentedView: JXSegmentedView = {
|
|
|
+ let segmentedView = JXSegmentedView()
|
|
|
+ segmentedView.backgroundColor = k000000Color.withAlphaComponent(0.3)
|
|
|
+ segmentedView.delegate = self
|
|
|
+ segmentedView.dataSource = segmentedDataSource
|
|
|
+ segmentedView.indicators = [indicator]
|
|
|
+ segmentedView.selectItemAt(index: 2)
|
|
|
+ segmentedView.defaultSelectedIndex = 2
|
|
|
+ segmentedView.cornerRadius = 20
|
|
|
+ segmentedView.masksToBounds = true
|
|
|
+ segmentedView.alpha = 0
|
|
|
+ return segmentedView
|
|
|
+ }()
|
|
|
+
|
|
|
+ //2.初始化dataSource
|
|
|
+ private lazy var segmentedDataSource: JXSegmentedTitleDataSource = {
|
|
|
+ let segmentedDataSource = JXSegmentedTitleDataSource()
|
|
|
+ segmentedDataSource.titles = ["极慢","慢","标准","快","极快"]
|
|
|
+ segmentedDataSource.isTitleColorGradientEnabled = true
|
|
|
+ segmentedDataSource.isItemSpacingAverageEnabled = true
|
|
|
+ segmentedDataSource.isTitleZoomEnabled = true
|
|
|
+ segmentedDataSource.titleNormalColor = kffffffColor
|
|
|
+ segmentedDataSource.titleSelectedColor = k333333Color
|
|
|
+ segmentedDataSource.titleNormalFont = kRegularFont14!
|
|
|
+ segmentedDataSource.titleSelectedFont = kRegularFont14
|
|
|
+ segmentedDataSource.isTitleStrokeWidthEnabled = false
|
|
|
+ segmentedDataSource.isTitleMaskEnabled = true
|
|
|
+ segmentedDataSource.itemSpacing = 0
|
|
|
+ segmentedDataSource.itemContentWidth = (kScreenWidth-28)/5
|
|
|
+ //reloadData(selectedIndex:)方法一定要调用,方法内部会刷新数据源数组
|
|
|
+ segmentedDataSource.reloadData(selectedIndex: 2)
|
|
|
+ return segmentedDataSource
|
|
|
+ }()
|
|
|
+
|
|
|
+ //3.初始化指示器indicator
|
|
|
+ private lazy var indicator: JXSegmentedIndicatorBackgroundView = {
|
|
|
+ let indicator = JXSegmentedIndicatorBackgroundView()
|
|
|
+ indicator.indicatorColor = .white
|
|
|
+ indicator.indicatorHeight = 40
|
|
|
+ indicator.backgroundWidthIncrement = 0
|
|
|
+ return indicator
|
|
|
+ }()
|
|
|
+
|
|
|
/// 左滑手势
|
|
|
lazy var leftSwipe: UISwipeGestureRecognizer = {
|
|
|
let leftSwipe = UISwipeGestureRecognizer(target: self, action: #selector(leftSwipeAction))
|
|
@@ -182,4 +235,64 @@ class PublishEditNewVideoSetView: BaseView {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// 点击手势
|
|
|
+ lazy var tap: UITapGestureRecognizer = {
|
|
|
+ let tap = UITapGestureRecognizer(target: self, action: #selector(tapAction))
|
|
|
+ tap.numberOfTapsRequired = 1
|
|
|
+ tap.numberOfTouchesRequired = 1
|
|
|
+ return tap
|
|
|
+ }()
|
|
|
+
|
|
|
+ /// 添加轻点手势
|
|
|
+ func addTap() {
|
|
|
+ addGestureRecognizer(tap)
|
|
|
+ }
|
|
|
+
|
|
|
+ /// 移除手势
|
|
|
+ func removetap() {
|
|
|
+ removeGestureRecognizer(tap)
|
|
|
+ }
|
|
|
+
|
|
|
+ /// 点击手势
|
|
|
+ typealias TapClosure = () -> Void
|
|
|
+ var tapClosure : TapClosure?
|
|
|
+ @objc func tapAction() {
|
|
|
+ if let tapClosure = tapClosure {
|
|
|
+ tapClosure()
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// 调速
|
|
|
+ typealias SpeedClosure = (Int) -> Void
|
|
|
+ var speedClosure : SpeedClosure?
|
|
|
}
|
|
|
+
|
|
|
+extension PublishEditNewVideoSetView : JXSegmentedViewDelegate {
|
|
|
+
|
|
|
+ //点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,而不关心具体是点击还是滚动选中的情况。
|
|
|
+ func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
|
|
|
+ if let speedClosure = speedClosure {
|
|
|
+ speedClosure(index)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 点击选中的情况才会调用该方法
|
|
|
+ func segmentedView(_ segmentedView: JXSegmentedView, didClickSelectedItemAt index: Int) {
|
|
|
+ //传递didClickSelectedItemAt事件给listContainerView,必须调用!!!
|
|
|
+ }
|
|
|
+
|
|
|
+ // 滚动选中的情况才会调用该方法(未支持滚动选中)
|
|
|
+ func segmentedView(_ segmentedView: JXSegmentedView, didScrollSelectedItemAt index: Int) {
|
|
|
+ print("\n------滚动选中\(index)")
|
|
|
+ }
|
|
|
+
|
|
|
+ // 正在滚动中的回调
|
|
|
+ func segmentedView(_ segmentedView: JXSegmentedView, scrollingFrom leftIndex: Int, to rightIndex: Int, percent: CGFloat) {
|
|
|
+ }
|
|
|
+
|
|
|
+ /// 是否允许点击选中目标index的item
|
|
|
+ func segmentedView(_ segmentedView: JXSegmentedView, canClickItemAt index: Int) -> Bool {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+}
|
|
|
+
|