南鑫林 5 gadi atpakaļ
vecāks
revīzija
f3202b00a0

+ 16 - 15
RainbowPlanet/RainbowPlanet/Modules/PublishNewModule/PublishNew/View/PublishNewVideoPhotoView.swift

@@ -15,24 +15,23 @@ class PublishNewVideoPhotoView: BaseView {
     }
     
     override func setupViews() {
-        
+        // 预览视图,必须设置
     }
     
     override func setupData() {
-//        PublishNewViewModel.shared.recorder = recorder
         /// 开始预览
-//        recorder.startPreview()
+        recorder?.startPreview()
         /// 开始预览前置/后置摄像头
-        recorder.startPreview(withPositon: AliyunIRecorderCameraPosition.back)
+//        recorder.startPreview(withPositon: AliyunIRecorderCameraPosition.back)
+        /// 停止预览
+        recorder?.stopPreview()
     }
     
     // SDK录制类
-    private lazy var recorder: AliyunIRecorder = {
-        weak var strongSelf = self
-        let recorder = AliyunIRecorder.init(delegate: strongSelf, videoSize: CGSize(width: 720, height: 1280))
-        // 预览视图,必须设置
-        recorder?.preview = strongSelf
-        
+    lazy var recorder: AliyunIRecorder? = {
+        let recorder = AliyunIRecorder.init(delegate: self, videoSize: CGSize(width: 720, height: 1280))
+        recorder?.preview = self
+
         /*
          视频的输出路径
          注意:若上一次录制的 outputPath 路径的视频存在沙盒里没有删除,并且与本次录制的视频路径且相同重名的话,录制将会失败
@@ -67,6 +66,12 @@ class PublishNewVideoPhotoView: BaseView {
         return recorder!
     }()
     
+    /// 显示授权View
+    func showAuthorizationView() {
+        PublishNewViewModel.shared.scrollView?.isHidden = true
+        PublishNewViewModel.shared.publishNewAuthorizationView?.isHidden = false
+    }
+    
 
 }
 
@@ -89,9 +94,5 @@ extension PublishNewVideoPhotoView : AliyunIRecorderDelegate {
         }
     }
     
-    /// 显示授权View
-    func showAuthorizationView() {
-        PublishNewViewModel.shared.scrollView?.isHidden = true
-        PublishNewViewModel.shared.publishNewAuthorizationView?.isHidden = false
-    }
+    
 }

+ 17 - 6
RainbowPlanet/RainbowPlanet/Modules/PublishNewModule/PublishNew/ViewController/PublishNewViewController.swift

@@ -20,7 +20,11 @@ class PublishNewViewController: BaseViewController {
     
     deinit {
         NXLLog("deinit")
-        publishNewViewModel?.recorder?.destroy()
+        if publishNewVideoPhotoView.recorder != nil {
+            publishNewVideoPhotoView.recorder?.stopPreview()
+            publishNewVideoPhotoView.recorder?.destroy()
+            publishNewVideoPhotoView.recorder = nil
+        }
     }
     
     
@@ -30,17 +34,18 @@ class PublishNewViewController: BaseViewController {
 
     override func viewDidLoad() {
         super.viewDidLoad()
-        setupData()
         setupViews()
         setupLayouts()
+        setupData()
     }
     
     override func setupViews() {
         navigationBar.isHidden = true
-        view.addSubview(publishNewAuthorizationView)
         view.addSubview(scrollView)
         scrollView.addSubview(publishNewVideoPhotoView)
         view.addSubview(segmentedView)
+        view.addSubview(publishNewAuthorizationView)
+
     }
     override func setupLayouts() {
         segmentedView.snp.makeConstraints { (make) in
@@ -66,7 +71,7 @@ class PublishNewViewController: BaseViewController {
     /// 授权View
     private lazy var publishNewAuthorizationView: PublishNewAuthorizationView = {
         let publishNewAuthorizationView = PublishNewAuthorizationView()
-        publishNewAuthorizationView.isHidden = false
+        publishNewAuthorizationView.isHidden = true
         return publishNewAuthorizationView
     }()
     
@@ -79,7 +84,7 @@ class PublishNewViewController: BaseViewController {
         scrollView.showsVerticalScrollIndicator = false
         scrollView.scrollsToTop = false
         scrollView.isScrollEnabled = false
-        scrollView.isHidden = true
+        scrollView.isHidden = false
         return scrollView
     }()
     
@@ -117,7 +122,6 @@ class PublishNewViewController: BaseViewController {
         segmentedDataSource.isTitleStrokeWidthEnabled = true
         //reloadData(selectedIndex:)方法一定要调用,方法内部会刷新数据源数组
         segmentedDataSource.reloadData(selectedIndex: 0)
-        
         return segmentedDataSource
     }()
     
@@ -159,17 +163,24 @@ extension PublishNewViewController : JXSegmentedViewDelegate {
             segmentedDataSourceAlbum.reloadData(selectedIndex: 0)
             segmentedView.dataSource = segmentedDataSourceAlbum
             statusBarStyle = .default
+            //停止预览摄像头
+            publishNewVideoPhotoView.recorder?.stopPreview()
         case 1:
             scrollView.setContentOffset(CGPoint(x: kScreenWidth, y:0), animated: true)
             segmentedDataSourceVideoPhoto.reloadData(selectedIndex: 1)
             segmentedView.dataSource = segmentedDataSourceVideoPhoto
             statusBarStyle = .lightContent
+            //开始预览摄像头
+            publishNewVideoPhotoView.recorder?.startPreview()
 
         case 2:
             scrollView.setContentOffset(CGPoint(x: kScreenWidth, y:0), animated: true)
             segmentedDataSourceVideoPhoto.reloadData(selectedIndex: 2)
             segmentedView.dataSource = segmentedDataSourceVideoPhoto
             statusBarStyle = .lightContent
+            //开始预览摄像头
+            publishNewVideoPhotoView.recorder?.startPreview()
+
         default:
             break
         }

+ 0 - 5
RainbowPlanet/RainbowPlanet/Modules/PublishNewModule/PublishNew/ViewModel/PublishNewViewModel.swift

@@ -11,8 +11,6 @@ import UIKit
 class PublishNewViewModel: NSObject {
     
     deinit {
-        scrollView = nil
-        publishNewAuthorizationView = nil
         NXLLog("deinit")
     }
     
@@ -26,8 +24,5 @@ class PublishNewViewModel: NSObject {
     /// 授权View
     weak var publishNewAuthorizationView : PublishNewAuthorizationView?
     
-    /// 录制摄像头
-    weak var recorder: AliyunIRecorder?
-    
     
 }