INIntroduceController.swift 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. //
  2. // INIntrocudeController.swift
  3. // Introduce
  4. //
  5. // Created by 胡志强 on 2021/11/29.
  6. //
  7. import BFCommonKit
  8. import BFRecordScreenKit
  9. import BFUIKit
  10. import Foundation
  11. import Photos
  12. import UIKit
  13. import BFAnalyzeKit
  14. class INIntroduceController: BFBaseViewController {
  15. var stripSwithView: BFStripSwithView?
  16. let exportBtn = UIButton()
  17. var assets: [PHAsset]? {
  18. didSet {
  19. if let ass = assets {
  20. recordScreenVC.assets = ass
  21. }
  22. }
  23. }
  24. let recordScreenVC = BFRecordScreenController()
  25. override func viewWillAppear(_ animated: Bool) {
  26. super.viewWillAppear(animated)
  27. showNavigation()
  28. PQNotification.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil)
  29. PQNotification.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: UIResponder.keyboardWillHideNotification, object: nil)
  30. }
  31. override func viewWillDisappear(_ animated: Bool) {
  32. super.viewWillDisappear(animated)
  33. PQNotification.removeObserver(self)
  34. }
  35. @objc internal func keyboardWillHide(_: Notification?) {
  36. navHeadImageView?.isHidden = false
  37. }
  38. @objc internal func keyboardWillShow(_: Notification?) {
  39. navHeadImageView?.isHidden = true
  40. }
  41. override func viewDidLoad() {
  42. super.viewDidLoad()
  43. navHeadImageView?.backgroundColor = .clear
  44. leftButton(image: nil, imageName: nil, tintColor: .white)
  45. exportBtn.backgroundColor = UIColor.hexColor(hexadecimal: "#389AFF")
  46. exportBtn.setTitle("导出", for: .normal)
  47. exportBtn.addCorner(corner: 4)
  48. exportBtn.titleLabel?.font = UIFont.systemFont(ofSize: 16)
  49. exportBtn.addTarget(self, action: #selector(exportAction), for: .touchUpInside)
  50. navHeadImageView?.addSubview(exportBtn)
  51. exportBtn.frame = CGRect(x: (navHeadImageView?.frame.width ?? 0) - 12 - 60, y: 0, width: 60, height: 36)
  52. exportBtn.center.y = backButton?.center.y ?? 0
  53. addChild(recordScreenVC)
  54. recordScreenVC.view.frame = view.frame
  55. view.addSubview(recordScreenVC.view)
  56. recordScreenVC.changeItemHandle = { [weak self] index in
  57. self?.stripSwithView?.changeSwitchStatus(index: index)
  58. }
  59. recordScreenVC.recordRndHandle = {model in
  60. // 录音完成时上报
  61. BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_speekButton, pageSource: .sp_speekPage,extParams: ["duration":Int((Double(model?.duration ?? "0") ?? 0) * 1000)],commonParams: commonParams())
  62. }
  63. recordScreenVC.subTitleBtnClickHandle = { isOn in
  64. // 点击字幕按钮上报
  65. BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_captionsButton, pageSource: .sp_speekPage,extParams: isOn ? ["on":true] : ["off" : true],commonParams: commonParams())
  66. }
  67. if assets != nil, (assets?.count ?? 0) > 1 {
  68. 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)
  69. stripSwithView?.center.y = backButton?.center.y ?? 0
  70. stripSwithView?.itemClickHandle = { [weak self] _, index in
  71. self?.recordScreenVC.updateContentOffset(index: index)
  72. if (self?.assets?.count ?? 0) > index {
  73. // 曝光上报
  74. BFEventTrackAdaptor.baseReportUpload(businessType: .bt_pageView, objectType: self?.assets?[index].mediaType == .video ? .ot_video: .ot_image, pageSource: .sp_speekPage, commonParams: commonParams())
  75. }
  76. }
  77. navHeadImageView?.addSubview(stripSwithView!)
  78. } else if assets != nil,(assets?.count ?? 0) > 0 {
  79. // 曝光上报
  80. BFEventTrackAdaptor.baseReportUpload(businessType: .bt_pageView, objectType: assets?.first?.mediaType == .video ? .ot_video: .ot_image, pageSource: .sp_speekPage, commonParams: commonParams())
  81. }
  82. }
  83. override func backBtnClick() {
  84. let alertController = UIAlertController(title: "退出将不会保存当前操作",
  85. message: "", preferredStyle: .alert)
  86. let cancelAction = UIAlertAction(title: "不退出", style: .default, handler: nil)
  87. let okAction = UIAlertAction(title: "确认退出", style: .cancel, handler: {[weak self]
  88. action in
  89. print("点击了确定")
  90. self?.recordScreenVC.backBtnClick()
  91. self?.super_back()
  92. })
  93. okAction.setValue(UIColor.red, forKey:"titleTextColor")
  94. alertController.addAction(okAction)
  95. alertController.addAction(cancelAction)
  96. self.present(alertController, animated: true, completion: nil)
  97. }
  98. private func super_back() {
  99. super.backBtnClick()
  100. }
  101. @objc func exportAction() {
  102. recordScreenVC.backBtnClick()
  103. let controller = INVideoExportController()
  104. controller.export.data = recordScreenVC.itemModels
  105. controller.export.originSoundVolumn = recordScreenVC.noSpeakVolume
  106. controller.export.originSoundInRecordVolumn = recordScreenVC.haveSpeakVolume
  107. navigationController?.pushViewController(controller, animated: true)
  108. // 点击导出按钮上报
  109. BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_exportButton, pageSource: .sp_speekPage,commonParams: commonParams())
  110. }
  111. }