123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- //
- // INIntrocudeController.swift
- // Introduce
- //
- // Created by 胡志强 on 2021/11/29.
- // 制作录音,预览页面
- import BFCommonKit
- import BFRecordScreenKit
- import BFUIKit
- import Foundation
- import Photos
- import UIKit
- import BFAnalyzeKit
- class INIntroduceController: BFBaseViewController {
- var stripSwithView: BFStripSwithView?
- let exportBtn = UIButton()
- var assets: [PHAsset]? {
- didSet {
- if let ass = assets {
- recordScreenVC.assets = ass
- }
- }
- }
- let recordScreenVC = BFRecordScreenController()
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- showNavigation()
- PQNotification.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil)
- PQNotification.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: UIResponder.keyboardWillHideNotification, object: nil)
- }
- override func viewWillDisappear(_ animated: Bool) {
- super.viewWillDisappear(animated)
- PQNotification.removeObserver(self)
- cHiddenHUB(superView: nil)
- }
- @objc internal func keyboardWillHide(_: Notification?) {
- navHeadImageView?.isHidden = false
- }
- @objc internal func keyboardWillShow(_: Notification?) {
- navHeadImageView?.isHidden = true
- }
- override func viewDidLoad() {
- super.viewDidLoad()
- navHeadImageView?.backgroundColor = .clear
- navHeadImageView?.image = UIImage(named: "top_shadow")
- navHeadImageView?.contentMode = .scaleToFill
- leftButton(image: nil, imageName: nil, tintColor: .white)
- exportBtn.backgroundColor = UIColor.hexColor(hexadecimal: "#389AFF")
- exportBtn.setTitle("导出", for: .normal)
- exportBtn.addCorner(corner: 4)
- exportBtn.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16)
- exportBtn.addTarget(self, action: #selector(exportAction), for: .touchUpInside)
- navHeadImageView?.addSubview(exportBtn)
- exportBtn.frame = CGRect(x: (navHeadImageView?.frame.width ?? 0) - 12 - 60, y: 0, width: 60, height: 36)
- exportBtn.center.y = backButton?.center.y ?? 0
- addChild(recordScreenVC)
- recordScreenVC.view.frame = view.frame
- view.addSubview(recordScreenVC.view)
- recordScreenVC.changeItemHandle = { [weak self] index in
- self?.stripSwithView?.changeSwitchStatus(index: index)
- }
- recordScreenVC.recordRndHandle = {model in
- // 录音完成时上报
- let assert = AVURLAsset(url: URL(fileURLWithPath:model?.wavFilePath ?? ""))
-
- BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_speekButton, pageSource: .sp_speekPage,extParams: ["duration":Int((assert.duration.seconds) * 1000)],commonParams: commonParams())
- }
- recordScreenVC.subTitleBtnClickHandle = { isOn in
- // 点击字幕按钮上报
- BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_captionsButton, pageSource: .sp_speekPage,extParams: isOn ? ["on":true] : ["off" : true],commonParams: commonParams())
- }
- if assets != nil, (assets?.count ?? 0) > 1 {
- stripSwithView = BFStripSwithView(frame: CGRect(x: (backButton?.frame.maxX ?? 0), y: 0, width: exportBtn.frame.minX - (backButton?.frame.maxX ?? 0) - 10, height: cDevice_iPhoneNavBarHei), items: assets?.count ?? 1,space: 4)
- stripSwithView?.center.y = backButton?.center.y ?? 0
- stripSwithView?.itemClickHandle = { [weak self] _, index in
- self?.recordScreenVC.updateContentOffset(index: index)
- // if (self?.assets?.count ?? 0) > index {
- // // 曝光上报
- // BFEventTrackAdaptor.baseReportUpload(businessType: .bt_pageView, objectType: self?.assets?[index].mediaType == .video ? .ot_video: .ot_image, pageSource: .sp_speekPage, commonParams: commonParams())
- // }
- }
- navHeadImageView?.addSubview(stripSwithView!)
- } else if assets != nil,(assets?.count ?? 0) > 0 {
- // 曝光上报
- BFEventTrackAdaptor.baseReportUpload(businessType: .bt_pageView, objectType: assets?.first?.mediaType == .video ? .ot_video: .ot_image, pageSource: .sp_speekPage, commonParams: commonParams())
- }
-
- // 已选素材上报
- if assets != nil ,(assets?.count ?? 0) > 0 {
- var materialTypeList:[String] = []
- assets?.forEach({ item in
- materialTypeList.append(item.mediaType == .video ? "video": "image")
- })
- BFEventTrackAdaptor.baseReportUpload(businessType: .bt_pageView, objectType: .ot_addMaterialSuccess, pageSource: .sp_speekPage,extParams: ["materialTypeList":materialTypeList],commonParams: commonParams())
- }
- }
- override func backBtnClick() {
-
- let alertController = UIAlertController(title: "退出将不会保存当前操作",
- message: "", preferredStyle: .alert)
- let cancelAction = UIAlertAction(title: "不退出", style: .default, handler: nil)
- let okAction = UIAlertAction(title: "确认退出", style: .cancel, handler: {[weak self]
- action in
- print("点击了确定")
- self?.recordScreenVC.backBtnClick()
- self?.super_back()
- })
- okAction.setValue(UIColor.red, forKey:"titleTextColor")
- alertController.addAction(okAction)
- alertController.addAction(cancelAction)
- self.present(alertController, animated: true, completion: nil)
-
- }
- private func super_back() {
- super.backBtnClick()
- }
- @objc func exportAction() {
- let count = recordScreenVC.itemModels.reduce(0, { partialResult, model in
- model.voiceStickers.count + partialResult
- })
- if count == 0 {
- cShowHUB(superView: nil, msg: "需要录制才可以导出")
- return
- }
-
- recordScreenVC.backBtnClick()
- let controller = INVideoExportController()
- controller.export.data = recordScreenVC.itemModels
- controller.export.originSoundVolumn = recordScreenVC.noSpeakVolume
- controller.export.originSoundInRecordVolumn = recordScreenVC.haveSpeakVolume
- controller.coverIV.image = recordScreenVC.itemModels.first?.coverImg
- navigationController?.pushViewController(controller, animated: true)
- // 点击导出按钮上报
- BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_exportButton, pageSource: .sp_speekPage,commonParams: commonParams())
- }
- }
|