|
@@ -43,11 +43,11 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
var mStickers: [PQEditVisionTrackMaterialsModel]?
|
|
|
// 播放器的开始和结束时间,1,刚进界面使用推荐的开始结束时间,2,用户修改起结点时修改
|
|
|
var playeTimeRange: CMTimeRange = CMTimeRange()
|
|
|
-
|
|
|
- //add by ak 是否是再创作模式
|
|
|
- var isReCreate:Bool = false
|
|
|
- //最后一个选择的模式 BTN 用于还原选中状态
|
|
|
- var lastEditModelBtn:UIButton?
|
|
|
+
|
|
|
+ // add by ak 是否是再创作模式
|
|
|
+ var isReCreate: Bool = false
|
|
|
+ // 最后一个选择的模式 BTN 用于还原选中状态
|
|
|
+ var lastEditModelBtn: UIButton?
|
|
|
// 下一步
|
|
|
lazy var nextBtn: UIButton = {
|
|
|
let nextBtn = UIButton(type: .custom)
|
|
@@ -72,12 +72,10 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
playerView.playerEmptyView.isHidden = true
|
|
|
return playerView
|
|
|
}()
|
|
|
-
|
|
|
-
|
|
|
|
|
|
/// 节奏选择视图
|
|
|
lazy var sustomSwitchView: PQCustomSwitchView = {
|
|
|
- let sustomSwitchView = PQCustomSwitchView(frame: CGRect(x:16, y: 0, width:180, height: 30), titles: ["快节奏", "适中", "慢节奏"], defaultIndex: stuckPointMusicData?.speed ?? 2)
|
|
|
+ let sustomSwitchView = PQCustomSwitchView(frame: CGRect(x: 16, y: 0, width: 180, height: 30), titles: ["快节奏", "适中", "慢节奏"], defaultIndex: stuckPointMusicData?.speed ?? 2)
|
|
|
sustomSwitchView.switchChangeHandle = { [weak self] sender in
|
|
|
// 改变速率
|
|
|
self?.stuckPointMusicData?.speed = sender.tag
|
|
@@ -166,7 +164,7 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
pointEditRemindLab.text = "卡点模式"
|
|
|
return pointEditRemindLab
|
|
|
}()
|
|
|
-
|
|
|
+
|
|
|
/// 卡点模式标题
|
|
|
lazy var speedTitleLab: UILabel = {
|
|
|
let speedTitleLab = UILabel()
|
|
@@ -177,16 +175,15 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
speedTitleLab.text = "节奏变化"
|
|
|
return speedTitleLab
|
|
|
}()
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
/// 卡点模式下方操作区背景
|
|
|
lazy var pointEditBGView: UIView = {
|
|
|
- let pointEditBGView = UIView.init()
|
|
|
+ let pointEditBGView = UIView()
|
|
|
pointEditBGView.backgroundColor = .clear
|
|
|
return pointEditBGView
|
|
|
}()
|
|
|
-
|
|
|
- //卡点编辑 btn
|
|
|
+
|
|
|
+ // 卡点编辑 btn
|
|
|
lazy var pointEditerBtn: UIButton = {
|
|
|
let pointEdterBtn = UIButton(type: .custom)
|
|
|
pointEdterBtn.setImage(UIImage().BF_Image(named: "pointEditerBtn_n"), for: .normal)
|
|
@@ -196,8 +193,8 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
pointEdterBtn.adjustsImageWhenHighlighted = false
|
|
|
return pointEdterBtn
|
|
|
}()
|
|
|
-
|
|
|
- //音乐编辑 btn
|
|
|
+
|
|
|
+ // 音乐编辑 btn
|
|
|
lazy var musicEditerBtn: UIButton = {
|
|
|
let musicEditerBtn = UIButton(type: .custom)
|
|
|
musicEditerBtn.setImage(UIImage().BF_Image(named: "musicEditerBtn_n"), for: .normal)
|
|
@@ -206,14 +203,14 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
musicEditerBtn.adjustsImageWhenHighlighted = false
|
|
|
return musicEditerBtn
|
|
|
}()
|
|
|
-
|
|
|
- //快慢速卡点模式 btn
|
|
|
+
|
|
|
+ // 快慢速卡点模式 btn
|
|
|
lazy var speedStuckBtn: UIButton = {
|
|
|
let speedStuckBtn = UIButton(type: .custom)
|
|
|
speedStuckBtn.setBackgroundImage(UIImage().BF_Image(named: "speedstuck_n"), for: .normal)
|
|
|
-
|
|
|
+
|
|
|
speedStuckBtn.setBackgroundImage(UIImage().BF_Image(named: "speedstuck_h"), for: .selected)
|
|
|
-
|
|
|
+
|
|
|
speedStuckBtn.addTarget(self, action: #selector(editModelClick(sender:)), for: .touchUpInside)
|
|
|
speedStuckBtn.isSelected = true
|
|
|
lastEditModelBtn = speedStuckBtn
|
|
@@ -222,7 +219,7 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
return speedStuckBtn
|
|
|
}()
|
|
|
|
|
|
- //跳转卡点模式 btn
|
|
|
+ // 跳转卡点模式 btn
|
|
|
lazy var jumpPointBtn: UIButton = {
|
|
|
let jumpPointBtn = UIButton(type: .custom)
|
|
|
jumpPointBtn.setImage(UIImage().BF_Image(named: "jumpPoint_n"), for: .normal)
|
|
@@ -232,8 +229,8 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
jumpPointBtn.adjustsImageWhenHighlighted = false
|
|
|
return jumpPointBtn
|
|
|
}()
|
|
|
-
|
|
|
- //仅配乐模式 btn
|
|
|
+
|
|
|
+ // 仅配乐模式 btn
|
|
|
lazy var onlyMusicBtn: UIButton = {
|
|
|
let onlyMusicBtn = UIButton(type: .custom)
|
|
|
onlyMusicBtn.setImage(UIImage().BF_Image(named: "onlyMusic_n"), for: .normal)
|
|
@@ -243,49 +240,46 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
onlyMusicBtn.adjustsImageWhenHighlighted = false
|
|
|
return onlyMusicBtn
|
|
|
}()
|
|
|
- //编辑模式的指示线
|
|
|
- lazy var editModelLineView: UIView = {
|
|
|
- let editModelLineView = UIView.init()
|
|
|
+
|
|
|
+ // 编辑模式的指示线
|
|
|
+ lazy var editModelLineView: UIView = {
|
|
|
+ let editModelLineView = UIView()
|
|
|
editModelLineView.backgroundColor = UIColor.hexColor(hexadecimal: "#EFEFEF")
|
|
|
return editModelLineView
|
|
|
}()
|
|
|
-
|
|
|
- //操作面板上的分割线
|
|
|
- lazy var optionlineView: UIView = {
|
|
|
- let optionlineView = UIView.init()
|
|
|
+
|
|
|
+ // 操作面板上的分割线
|
|
|
+ lazy var optionlineView: UIView = {
|
|
|
+ let optionlineView = UIView()
|
|
|
optionlineView.backgroundColor = UIColor.hexColor(hexadecimal: "#EFEFEF")
|
|
|
return optionlineView
|
|
|
}()
|
|
|
-
|
|
|
- //固定速度 UI
|
|
|
- lazy var speedSettingView:PQSpeedSettingView = {
|
|
|
-
|
|
|
- let speedSettingView = PQSpeedSettingView.init()
|
|
|
+
|
|
|
+ // 固定速度 UI
|
|
|
+ lazy var speedSettingView: PQSpeedSettingView = {
|
|
|
+ let speedSettingView = PQSpeedSettingView()
|
|
|
speedSettingView.backgroundColor = .clear
|
|
|
speedSettingView.viewType = 1
|
|
|
- speedSettingView.selectSpeedCallBack = { [weak self] maxSpeed,minSpeed in
|
|
|
+ speedSettingView.selectSpeedCallBack = { [weak self] maxSpeed, minSpeed in
|
|
|
BFLog(message: "maxSpeed is\(maxSpeed) minSpeed \(minSpeed)")
|
|
|
- if(maxSpeed == 0 && minSpeed == 0){
|
|
|
+ if maxSpeed == 0 && minSpeed == 0 {
|
|
|
self?.customSpeedSettingView.isHidden = false
|
|
|
self?.customSpeedSettingView.isJumpSpeedModel = speedSettingView.viewType == 2
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
return speedSettingView
|
|
|
-
|
|
|
+
|
|
|
}()
|
|
|
-
|
|
|
- //自定义速度
|
|
|
- lazy var customSpeedSettingView:PQCustomSpeedSettingView = {
|
|
|
-
|
|
|
- let customSpeedSettingView = PQCustomSpeedSettingView.init(frame: CGRect(x: 0, y: cScreenHeigth - 354, width: cScreenWidth, height: 354))
|
|
|
+
|
|
|
+ // 自定义速度
|
|
|
+ lazy var customSpeedSettingView: PQCustomSpeedSettingView = {
|
|
|
+ let customSpeedSettingView = PQCustomSpeedSettingView(frame: CGRect(x: 0, y: cScreenHeigth - 354, width: cScreenWidth, height: 354))
|
|
|
customSpeedSettingView.isHidden = true
|
|
|
customSpeedSettingView.isJumpSpeedModel = false
|
|
|
return customSpeedSettingView
|
|
|
-
|
|
|
+
|
|
|
}()
|
|
|
|
|
|
-
|
|
|
/// 音乐标题
|
|
|
lazy var musicNameView: UIView = {
|
|
|
let musicNameView = UIView()
|
|
@@ -350,39 +344,37 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
// 点击上报:返回按钮
|
|
|
PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_back, pageSource: .sp_stuck_previewSyncedUp, extParams: nil, remindmsg: "卡点视频数据上报-(点击上报:返回按钮)")
|
|
|
}
|
|
|
-
|
|
|
- //卡点编辑
|
|
|
+
|
|
|
+ // 卡点编辑
|
|
|
@objc func pointEditerBtnClick(sender: UIButton) {
|
|
|
- if(sender.isSelected){return}
|
|
|
+ if sender.isSelected { return }
|
|
|
sender.isSelected = !sender.isSelected
|
|
|
musicEditerBtn.isSelected = false
|
|
|
-
|
|
|
}
|
|
|
- //音乐编辑
|
|
|
+
|
|
|
+ // 音乐编辑
|
|
|
@objc func musicEditerBtnClick(sender: UIButton) {
|
|
|
- if(sender.isSelected){return}
|
|
|
+ if sender.isSelected { return }
|
|
|
sender.isSelected = !sender.isSelected
|
|
|
pointEditerBtn.isSelected = false
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
- //三种模式修改
|
|
|
- @objc func editModelClick(sender:UIButton){
|
|
|
- if(sender.isSelected){
|
|
|
-
|
|
|
- BFLog(message:"已经是选中状态")
|
|
|
+
|
|
|
+ // 三种模式修改
|
|
|
+ @objc func editModelClick(sender: UIButton) {
|
|
|
+ if sender.isSelected {
|
|
|
+ BFLog(message: "已经是选中状态")
|
|
|
return
|
|
|
}
|
|
|
lastEditModelBtn?.isSelected = false
|
|
|
sender.isSelected = !sender.isSelected
|
|
|
lastEditModelBtn = sender
|
|
|
-
|
|
|
+
|
|
|
BFLog(message: "sender tag is \(sender.tag)")
|
|
|
- //1 ui 调整
|
|
|
- if(sender.tag == 1 || sender.tag == 2){
|
|
|
+ // 1 ui 调整
|
|
|
+ if sender.tag == 1 || sender.tag == 2 {
|
|
|
speedSettingView.viewType = sender.tag
|
|
|
customSpeedSettingView.isJumpSpeedModel = speedSettingView.viewType == 2
|
|
|
-
|
|
|
+
|
|
|
speedSettingView.snp.remakeConstraints { make in
|
|
|
make.left.equalToSuperview().offset(16)
|
|
|
make.right.equalToSuperview()
|
|
@@ -393,21 +385,17 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
speedTitleLab.isHidden = false
|
|
|
sustomSwitchView.isHidden = false
|
|
|
editModelLineView.isHidden = false
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
speedSettingView.isHidden = true
|
|
|
speedTitleLab.isHidden = true
|
|
|
sustomSwitchView.isHidden = true
|
|
|
editModelLineView.isHidden = true
|
|
|
}
|
|
|
- //2 不同状的业务逻辑
|
|
|
- if(sender.tag == 1){// 快慢速
|
|
|
-
|
|
|
- }else if(sender.tag == 2){//跳跃卡点
|
|
|
-
|
|
|
- }else if(sender.tag == 3){//仅音乐
|
|
|
-
|
|
|
+ // 2 不同状的业务逻辑
|
|
|
+ if sender.tag == 1 { // 快慢速
|
|
|
+ } else if sender.tag == 2 { // 跳跃卡点
|
|
|
+ } else if sender.tag == 3 { // 仅音乐
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
override func viewWillDisappear(_ animated: Bool) {
|
|
@@ -422,7 +410,7 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
leftButton(image: "icon_detail_back", tintColor: PQBFConfig.shared.styleTitleColor)
|
|
|
navHeadImageView?.addSubview(nextBtn)
|
|
|
navHeadImageView?.addSubview(musicNameView)
|
|
|
-
|
|
|
+
|
|
|
// 添加子视图
|
|
|
addSubViews()
|
|
|
// 导出相册视频
|
|
@@ -442,11 +430,11 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
view.addSubview(playerView)
|
|
|
view.addSubview(pointEditBGView)
|
|
|
view.addSubview(optionlineView)
|
|
|
-
|
|
|
+
|
|
|
view.addSubview(pointEditerBtn)
|
|
|
view.addSubview(musicEditerBtn)
|
|
|
view.addSubview(customSpeedSettingView)
|
|
|
-
|
|
|
+
|
|
|
pointEditBGView.addSubview(pointEditRemindLab)
|
|
|
pointEditBGView.addSubview(speedTitleLab)
|
|
|
pointEditBGView.addSubview(speedStuckBtn)
|
|
@@ -456,14 +444,14 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
pointEditBGView.addSubview(speedSettingView)
|
|
|
pointEditBGView.addSubview(sustomSwitchView)
|
|
|
// view.addSubview(stuckPointCuttingView)
|
|
|
-
|
|
|
+
|
|
|
pointEditerBtn.snp.makeConstraints { make in
|
|
|
make.left.equalToSuperview().offset(100)
|
|
|
make.bottom.equalToSuperview().offset(-(14 + cAKSafeAreaHeight))
|
|
|
make.height.equalTo(24)
|
|
|
make.width.equalTo(24)
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
musicEditerBtn.snp.makeConstraints { make in
|
|
|
make.right.equalToSuperview().offset(-100)
|
|
|
make.top.equalTo(pointEditerBtn.snp_top)
|
|
@@ -528,7 +516,6 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
make.height.equalTo(30)
|
|
|
make.width.equalTo(180)
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
@objc func nextBtnClick(sender _: UIButton) {
|
|
@@ -627,7 +614,7 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
videoSize = CGSize(width: minSlider, height: maxSlider)
|
|
|
}
|
|
|
|
|
|
- let maxValue = max(videoSize.width , videoSize.height ?? 0)
|
|
|
+ let maxValue = max(videoSize.width, videoSize.height ?? 0)
|
|
|
if maxValue > 1920 {
|
|
|
let maxRation = 1920 / maxValue
|
|
|
|
|
@@ -799,8 +786,8 @@ extension PQStuckPointEditerController {
|
|
|
- 快节奏为选中区域的所有点位,即0,1,2,3,4 5 6 7 8 9 10 ……
|
|
|
- 适中为每两个点位取一个,即0,3,6,9 12
|
|
|
- 慢节奏为每三个点位取一个,即0 5 10 15
|
|
|
- 慢节奏要做特殊处理
|
|
|
- 5d or L/1.23
|
|
|
+ 慢节奏要做特殊处理
|
|
|
+ 5d or L/1.23
|
|
|
(*当输入素材为L ∈(0-10.5]s 时,判断与5d之间的关系,若L/1.2≥5d,则取5d;若L/1.2<5d,则取L/1.2)
|
|
|
*/
|
|
|
// 跳跃卡点模式下根据不同速度 取卡点 1,2,3
|
|
@@ -1028,12 +1015,12 @@ extension PQStuckPointEditerController {
|
|
|
|
|
|
sticker.model_in = Double(index * spit)
|
|
|
sticker.out = sticker.model_in + Double(spit)
|
|
|
-
|
|
|
+
|
|
|
// let spit: Int = 2
|
|
|
// sticker.timelineIn = 57.5
|
|
|
// sticker.timelineOut = sticker.timelineIn + 24
|
|
|
// sticker.speedRate = index % 2 == 0 ? 0.1 : 2
|
|
|
-//// sticker.speedRate = 0.1
|
|
|
+ //// sticker.speedRate = 0.1
|
|
|
// sticker.model_in = 0
|
|
|
// sticker.out = sticker.model_in + 24
|
|
|
|