|
@@ -25,12 +25,27 @@ class PublishVideoView: BaseView {
|
|
typealias BtnClickClosure = (_ btnType: BtnActionType) -> Void
|
|
typealias BtnClickClosure = (_ btnType: BtnActionType) -> Void
|
|
var btnClickClosure : BtnClickClosure?
|
|
var btnClickClosure : BtnClickClosure?
|
|
|
|
|
|
- typealias VideoClosure = (_ isRecording: Int) -> Void
|
|
|
|
|
|
+ typealias VideoClosure = (_ isRecord: Int) -> Void
|
|
var videoClosure : VideoClosure?
|
|
var videoClosure : VideoClosure?
|
|
|
|
|
|
|
|
+ var maxDuration: CGFloat? {
|
|
|
|
+ didSet {
|
|
|
|
+ progressView.maxDuration = maxDuration!
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ var minDuration: CGFloat? {
|
|
|
|
+ didSet {
|
|
|
|
+ progressView.minDuration = minDuration!
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 是否正在录制
|
|
|
|
+ var recording: Bool = false
|
|
|
|
+
|
|
override func setupViews() {
|
|
override func setupViews() {
|
|
self.backgroundColor = kffffffColor
|
|
self.backgroundColor = kffffffColor
|
|
|
|
|
|
|
|
+ addSubview(progressView)
|
|
addSubview(backButton)
|
|
addSubview(backButton)
|
|
addSubview(recordButton)
|
|
addSubview(recordButton)
|
|
addSubview(segmentedView)
|
|
addSubview(segmentedView)
|
|
@@ -40,6 +55,10 @@ class PublishVideoView: BaseView {
|
|
controlBackView.addSubview(musicButton)
|
|
controlBackView.addSubview(musicButton)
|
|
controlBackView.addSubview(filterButton)
|
|
controlBackView.addSubview(filterButton)
|
|
|
|
|
|
|
|
+ addSubview(timeBackView)
|
|
|
|
+ timeBackView.addSubview(timeDotView)
|
|
|
|
+ timeBackView.addSubview(timeLabel)
|
|
|
|
+
|
|
addSubview(selBackView)
|
|
addSubview(selBackView)
|
|
selBackView.addSubview(confirmButton)
|
|
selBackView.addSubview(confirmButton)
|
|
selBackView.addSubview(delButton)
|
|
selBackView.addSubview(delButton)
|
|
@@ -50,6 +69,13 @@ class PublishVideoView: BaseView {
|
|
|
|
|
|
override func setupLayouts() {
|
|
override func setupLayouts() {
|
|
|
|
|
|
|
|
+ progressView.snp.makeConstraints { (make) in
|
|
|
|
+ make.top.equalTo(40)
|
|
|
|
+ make.left.equalTo(14)
|
|
|
|
+ make.right.equalTo(-14)
|
|
|
|
+ make.height.equalTo(5)
|
|
|
|
+ }
|
|
|
|
+
|
|
backButton.snp.makeConstraints { (make) in
|
|
backButton.snp.makeConstraints { (make) in
|
|
make.top.equalTo(55)
|
|
make.top.equalTo(55)
|
|
make.left.equalTo(5)
|
|
make.left.equalTo(5)
|
|
@@ -99,6 +125,26 @@ class PublishVideoView: BaseView {
|
|
}
|
|
}
|
|
filterButton.layoutButton(edgeInsetsStyle: ButtonEdgeInsetsStyle.top, imageTitleSpace: 4)
|
|
filterButton.layoutButton(edgeInsetsStyle: ButtonEdgeInsetsStyle.top, imageTitleSpace: 4)
|
|
|
|
|
|
|
|
+ /***** 拍摄时长 *****/
|
|
|
|
+ timeBackView.snp.makeConstraints { (make) in
|
|
|
|
+ make.bottom.equalTo(recordButton.snp_top).offset(-20)
|
|
|
|
+ make.centerX.equalToSuperview()
|
|
|
|
+ make.height.equalTo(20)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ timeDotView.snp.makeConstraints { (make) in
|
|
|
|
+ make.left.equalToSuperview()
|
|
|
|
+ make.centerY.equalToSuperview()
|
|
|
|
+ make.size.equalTo(8)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ timeLabel.snp.makeConstraints { (make) in
|
|
|
|
+ make.left.equalTo(timeDotView.snp_right).offset(4)
|
|
|
|
+ make.top.bottom.equalToSuperview()
|
|
|
|
+ make.width.equalTo(40)
|
|
|
|
+ make.right.equalToSuperview()
|
|
|
|
+ }
|
|
|
|
+
|
|
/***** 回删、确定 *****/
|
|
/***** 回删、确定 *****/
|
|
selBackView.snp.makeConstraints { (make) in
|
|
selBackView.snp.makeConstraints { (make) in
|
|
make.bottom.equalTo(-83)
|
|
make.bottom.equalTo(-83)
|
|
@@ -126,6 +172,26 @@ class PublishVideoView: BaseView {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 刷新进度条进度
|
|
|
|
+ func recordingPercent(percent: CGFloat) {
|
|
|
|
+ print("----updates - \(percent)")
|
|
|
|
+ progressView.updateProgress(percent)
|
|
|
|
+
|
|
|
|
+// if recording {
|
|
|
|
+ let d: Int = Int(percent)
|
|
|
|
+ let m: Int = Int(d / 60)
|
|
|
|
+ let s: Int = Int(d % 60)
|
|
|
|
+
|
|
|
|
+ timeLabel.text = String(format: "%02d:%02d", m, s)
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+ if percent == 0 {
|
|
|
|
+ progressView.reset()
|
|
|
|
+ timeLabel.text = ""
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
// MARK: - 创建视图控件
|
|
// MARK: - 创建视图控件
|
|
//1.初始化JXSegmentedViewx
|
|
//1.初始化JXSegmentedViewx
|
|
lazy var segmentedView: JXSegmentedView = {
|
|
lazy var segmentedView: JXSegmentedView = {
|
|
@@ -224,6 +290,29 @@ class PublishVideoView: BaseView {
|
|
return filterButton
|
|
return filterButton
|
|
}()
|
|
}()
|
|
|
|
|
|
|
|
+ // MARK:放置"拍摄时长Label"のView
|
|
|
|
+ lazy var timeBackView: UIView = {
|
|
|
|
+ let timeBackView = UIView()
|
|
|
|
+ return timeBackView
|
|
|
|
+ }()
|
|
|
|
+
|
|
|
|
+ private lazy var timeDotView: UIView = {
|
|
|
|
+ let timeDotView = UIView()
|
|
|
|
+ timeDotView.backgroundColor = kFF5E5EColor
|
|
|
|
+ timeDotView.cornerRadius = 4
|
|
|
|
+ timeDotView.masksToBounds = true
|
|
|
|
+ return timeDotView
|
|
|
|
+ }()
|
|
|
|
+
|
|
|
|
+ private lazy var timeLabel: UILabel = {
|
|
|
|
+ let timeLabel = UILabel()
|
|
|
|
+ timeLabel.textColor = kffffffColor
|
|
|
|
+ timeLabel.font = kRegularFont14
|
|
|
|
+ timeLabel.textAlignment = .left
|
|
|
|
+ timeLabel.numberOfLines = 1
|
|
|
|
+ return timeLabel
|
|
|
|
+ }()
|
|
|
|
+
|
|
// MARK:放置"回删、确定"のView
|
|
// MARK:放置"回删、确定"のView
|
|
lazy var selBackView: UIView = {
|
|
lazy var selBackView: UIView = {
|
|
let selBackView = UIView()
|
|
let selBackView = UIView()
|
|
@@ -258,6 +347,17 @@ class PublishVideoView: BaseView {
|
|
return confirmButton
|
|
return confirmButton
|
|
}()
|
|
}()
|
|
|
|
|
|
|
|
+ // MARK:progressView
|
|
|
|
+ lazy var progressView: QUProgressView = {
|
|
|
|
+ let progressView = QUProgressView()
|
|
|
|
+ progressView.showBlink = false
|
|
|
|
+ progressView.showNoticePoint = true
|
|
|
|
+ progressView.backgroundColor = UIColor.black.withAlphaComponent(0.01)
|
|
|
|
+ progressView.cornerRadius = 2
|
|
|
|
+ progressView.masksToBounds = true
|
|
|
|
+ return progressView
|
|
|
|
+ }()
|
|
|
|
+
|
|
// MARK:录制のButton
|
|
// MARK:录制のButton
|
|
private lazy var recordButton: UIButton = {
|
|
private lazy var recordButton: UIButton = {
|
|
let recordButton = UIButton(type: UIButton.ButtonType.custom)
|
|
let recordButton = UIButton(type: UIButton.ButtonType.custom)
|
|
@@ -266,8 +366,8 @@ class PublishVideoView: BaseView {
|
|
recordButton.rx.tap.subscribe(onNext: { [weak self] (data) in
|
|
recordButton.rx.tap.subscribe(onNext: { [weak self] (data) in
|
|
recordButton.isSelected = !recordButton.isSelected
|
|
recordButton.isSelected = !recordButton.isSelected
|
|
if let videoClosure = self?.videoClosure {
|
|
if let videoClosure = self?.videoClosure {
|
|
- let isRecording: Int = recordButton.isSelected == true ? 1 : 0
|
|
|
|
- videoClosure(isRecording)
|
|
|
|
|
|
+ let isRecord: Int = recordButton.isSelected == true ? 1 : 0
|
|
|
|
+ videoClosure(isRecord)
|
|
}
|
|
}
|
|
}).disposed(by: disposeBag)
|
|
}).disposed(by: disposeBag)
|
|
|
|
|