diff --git a/SwiftProject/SwiftProject.xcodeproj/project.pbxproj b/SwiftProject/SwiftProject.xcodeproj/project.pbxproj
index 3e06730..4e76b0c 100644
--- a/SwiftProject/SwiftProject.xcodeproj/project.pbxproj
+++ b/SwiftProject/SwiftProject.xcodeproj/project.pbxproj
@@ -1070,7 +1070,7 @@
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen.storyboard;
INFOPLIST_KEY_UIMainStoryboardFile = Main;
- INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
+ INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = (
@@ -1122,7 +1122,7 @@
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen.storyboard;
INFOPLIST_KEY_UIMainStoryboardFile = Main;
- INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
+ INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = (
diff --git a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate
index a6019dc..bc72ced 100644
Binary files a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate and b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
index 0dbb94d..42df0d6 100644
--- a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
+++ b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -545,8 +545,8 @@
filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/CCSpatialVideoDisplayController.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "280"
- endingLineNumber = "280"
+ startingLineNumber = "373"
+ endingLineNumber = "373"
landmarkName = "notification_didActiveNotification(notification:)"
landmarkType = "7">
@@ -641,8 +641,8 @@
filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/ZZHCustomSlider.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "265"
- endingLineNumber = "265"
+ startingLineNumber = "266"
+ endingLineNumber = "266"
landmarkName = "touchesCancelled(_:with:)"
landmarkType = "7">
@@ -650,49 +650,49 @@
+
+
+
+
+
+
+
+
-
-
-
-
-
-
diff --git a/SwiftProject/SwiftProject/AppDelegate.swift b/SwiftProject/SwiftProject/AppDelegate.swift
index c6561fa..dfaa7ee 100644
--- a/SwiftProject/SwiftProject/AppDelegate.swift
+++ b/SwiftProject/SwiftProject/AppDelegate.swift
@@ -26,6 +26,7 @@ import FirebaseRemoteConfig
class AppDelegate: UIResponder, UIApplicationDelegate {
var remoteConfig:FirebaseRemoteConfig.RemoteConfig?
+ var allowRotation = false
var window: UIWindow?
// var root:RootManager?
var newWindow:UIWindow?
@@ -87,6 +88,14 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
}
+
+ func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
+ if self.allowRotation {
+ return UIInterfaceOrientationMask.all
+ }
+ return UIInterfaceOrientationMask.portrait
+ }
+
// func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
// print("configurationForConnecting....")
// let scene = UIWindowScene(session: connectingSceneSession, connectionOptions: options)
diff --git a/SwiftProject/SwiftProject/CCKit/Base/BaseController.swift b/SwiftProject/SwiftProject/CCKit/Base/BaseController.swift
index 914a27b..69c59c0 100644
--- a/SwiftProject/SwiftProject/CCKit/Base/BaseController.swift
+++ b/SwiftProject/SwiftProject/CCKit/Base/BaseController.swift
@@ -78,8 +78,13 @@ class BaseController: BaseVirtualController {
}
+
+
override func viewDidLoad() {
super.viewDidLoad()
+ KAppDelegate?.allowRotation = false
+ self.setNeedsUpdateOfSupportedInterfaceOrientations()
+
self.setNavgationBarColorImg(color: .black)
// self.setNavgationBarColorImg(color: tabBarTintSelectColor)
self.setNavgationBarLine(color: BackGroundColor)
diff --git a/SwiftProject/SwiftProject/CCKit/Base/BaseVirtualController.swift b/SwiftProject/SwiftProject/CCKit/Base/BaseVirtualController.swift
index 1c08bed..61546a7 100644
--- a/SwiftProject/SwiftProject/CCKit/Base/BaseVirtualController.swift
+++ b/SwiftProject/SwiftProject/CCKit/Base/BaseVirtualController.swift
@@ -112,9 +112,13 @@ class BaseVirtualController: UIViewController {
public func setNavgationBarColorImg(color:UIColor){
if(navtionBar == nil){
navtionBar = UIImageView.init()
- navtionBar?.frame = CGRect.init(x: 0, y: 0, width: SCREEN_Width, height: SafeAreaTop_Height)
+// navtionBar?.frame = CGRect.init(x: 0, y: 0, width: SCREEN_Width, height: SafeAreaTop_Height)
navtionBar?.isUserInteractionEnabled = true
view.addSubview(navtionBar!)
+ navtionBar?.snp.makeConstraints { make in
+ make.left.top.right.equalToSuperview()
+ make.height.equalTo(SafeAreaTop_Height)
+ }
}
if(navtionImgView == nil){
navtionImgView = UIImageView.init()
diff --git a/SwiftProject/SwiftProject/CCKit/Root/RootNavigationController.swift b/SwiftProject/SwiftProject/CCKit/Root/RootNavigationController.swift
index 3d0b007..61e6897 100644
--- a/SwiftProject/SwiftProject/CCKit/Root/RootNavigationController.swift
+++ b/SwiftProject/SwiftProject/CCKit/Root/RootNavigationController.swift
@@ -23,5 +23,7 @@ class RootNavigationController: UINavigationController {
// Do any additional setup after loading the view.
}
+// appli
+
}
diff --git a/SwiftProject/SwiftProject/Info.plist b/SwiftProject/SwiftProject/Info.plist
index 4ffd80f..b14175f 100644
--- a/SwiftProject/SwiftProject/Info.plist
+++ b/SwiftProject/SwiftProject/Info.plist
@@ -2,8 +2,23 @@
+ CFBundleURLTypes
+
+
+ CFBundleURLSchemes
+
+ fb349630657543828
+
+
+
+ FacebookAppID
+ 349630657543828
FacebookAutoLogAppEventsEnabled
+ FacebookClientToken
+ 14b6cc1b437b5a201663ebd7e1a9b2bb
+ FacebookDisplayName
+ VPCamera
FirebaseAutomaticScreenReportingEnabled
NSAppTransportSecurity
@@ -43,20 +58,5 @@
UIBackgroundModes
- CFBundleURLTypes
-
-
- CFBundleURLSchemes
-
- fb349630657543828
-
-
-
- FacebookAppID
- 349630657543828
- FacebookClientToken
- 14b6cc1b437b5a201663ebd7e1a9b2bb
- FacebookDisplayName
- VPCamera
diff --git a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/CCSpatialVideoDisplayController.swift b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/CCSpatialVideoDisplayController.swift
index 15c5b4c..4319099 100644
--- a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/CCSpatialVideoDisplayController.swift
+++ b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/CCSpatialVideoDisplayController.swift
@@ -104,6 +104,7 @@ class CCSpatialVideoDisplayController: BaseController {
var customPlayer:ZZHCustomPlayer = {
let cp = ZZHCustomPlayer(frame: .zero)
+
return cp
}()
@@ -213,7 +214,7 @@ class CCSpatialVideoDisplayController: BaseController {
return button
}()
-
+
override func viewDidLoad() {
super.viewDidLoad()
@@ -222,8 +223,86 @@ class CCSpatialVideoDisplayController: BaseController {
self.customPlayer.setUPPlayer()
// 检查当前是否已连接到 AirPlay 设备
self.checkAirPlayStatus()
+ KAppDelegate?.allowRotation = true
+ listingScreenOrientatinChange()
+// self.setNeedsUpdateOfSupportedInterfaceOrientations()
}
+ override func viewWillDisappear(_ animated: Bool) {
+ super.viewWillDisappear(animated)
+ self.customPlayer.play(false)
+ KAppDelegate?.allowRotation = false
+ self.setNeedsUpdateOfSupportedInterfaceOrientations()
+ }
+
+ override func viewWillAppear(_ animated: Bool) {
+ super.viewWillAppear(animated)
+ KAppDelegate?.allowRotation = true
+ }
+
+ override func viewDidDisappear(_ animated: Bool) {
+ super.viewDidDisappear(animated)
+ if externalVC != nil {
+ externalVC?.playerLayer?.player = nil
+ }
+ customPlayer.play(false)
+ releaseVideoComposition()
+
+ let sec:TimeInterval = ZZHHelper.getSecFromUserDefaultByKey(kNowTimeToUserDefaultKey_VideoDisplayController)
+ Analytics.logEvent("preview_pv", parameters: ["refer_page":"视频预览页面","duration":sec])
+
+ print(".........ccs viewdid disappear....")
+
+ }
+
+
+
+ override func viewDidAppear(_ animated: Bool) {
+ super.viewDidAppear(animated)
+
+ }
+
+ // 开始监听设备方向变化
+ func listingScreenOrientatinChange() {
+ UIDevice.current.beginGeneratingDeviceOrientationNotifications()
+ // 添加监听器
+ NotificationCenter.default.addObserver(self, selector: #selector(screenOrientationRotate), name: UIDevice.orientationDidChangeNotification, object: nil)
+ }
+
+ @objc func screenOrientationRotate() {
+ let orientation = UIDevice.current.orientation
+ switch orientation {
+ case .portrait , .portraitUpsideDown:
+ print("Portrait")
+ self.customPlayer.snp.updateConstraints { make in
+ make.height.equalTo(460)
+ }
+ navtionBar?.snp.updateConstraints { make in
+ make.top.equalToSuperview().offset(0)
+ }
+ self.view.layoutIfNeeded()
+ self.customPlayer.layoutViewWhenScreenLandscape(value: false)
+ self.navtionBar?.isHidden = false
+ self.customPlayer.isLandscape = false
+ break
+ case .landscapeLeft , .landscapeRight:
+ print("Landscape ...")
+ self.customPlayer.isLandscape = true
+ self.customPlayer.snp.updateConstraints { make in
+ make.height.equalTo(KScreenWidth)
+ }
+
+ navtionBar?.snp.updateConstraints { make in
+ make.top.equalToSuperview().offset(-KStatusBarHeight * 0.5)
+ }
+ self.view.layoutIfNeeded()
+ self.customPlayer.layoutViewWhenScreenLandscape(value: true)
+ self.navtionBar?.isHidden = true
+ break
+ default:
+ print("Other")
+ }
+ }
func configureUI(){
self.view.backgroundColor = UIColor(hexString: "#060507")
@@ -237,7 +316,19 @@ class CCSpatialVideoDisplayController: BaseController {
self.view.bringSubviewToFront(self.navtionBar!)
navtionBar?.addSubview(transformButton)
+ transformButton.snp.makeConstraints { make in
+ make.width.equalTo(56)
+ make.height.equalTo(36)
+ make.right.equalToSuperview().offset(-14)
+ make.centerY.equalToSuperview().offset(StatuBar_Height*0.5)
+ }
navtionBar?.addSubview(mTopCenterTypeButton)
+ mTopCenterTypeButton.snp.makeConstraints { make in
+ make.height.equalTo(36)
+ make.width.equalTo(SCREEN_Width * 0.4 + 20)
+ make.centerX.equalToSuperview()
+ make.centerY.equalToSuperview().offset(StatuBar_Height*0.5)
+ }
self.view.addSubview(tipsButton)
self.view.addSubview(self.customPlayer)
@@ -246,7 +337,9 @@ class CCSpatialVideoDisplayController: BaseController {
make.height.equalTo(460)
}
self.customPlayer.sourceVideoURL = sourceVideoURL
-
+ self.customPlayer.maskViewTapCallback = {[weak self] in
+ self?.navtionBar?.isHidden = !(self?.navtionBar?.isHidden ?? true)
+ }
self.view.addSubview(self.maskLabel)
self.maskLabel.snp.makeConstraints { make in
make.left.equalTo(customPlayer.snp.left)
@@ -294,27 +387,7 @@ class CCSpatialVideoDisplayController: BaseController {
print("notificatin_newErrorLogEntryNotification....")
}
- override func viewDidDisappear(_ animated: Bool) {
- super.viewDidDisappear(animated)
- if externalVC != nil {
- externalVC?.playerLayer?.player = nil
- }
- customPlayer.play(false)
- releaseVideoComposition()
-
- let sec:TimeInterval = ZZHHelper.getSecFromUserDefaultByKey(kNowTimeToUserDefaultKey_VideoDisplayController)
- Analytics.logEvent("preview_pv", parameters: ["refer_page":"视频预览页面","duration":sec])
-
- print(".........ccs viewdid disappear....")
-
- }
-
-
- override func viewDidAppear(_ animated: Bool) {
- super.viewDidAppear(animated)
-
- }
//MARK: - 监听设备投流
@objc private func airPlayStatusDidChange(_ notification: Notification) {
@@ -472,6 +545,8 @@ class CCSpatialVideoDisplayController: BaseController {
print("patialvideodisplaycontroler deinit......")
releaseVideoComposition()
NotificationCenter.default.removeObserver(self)
+ // 停止监听设备方向变化
+ UIDevice.current.endGeneratingDeviceOrientationNotifications()
}
func releaseVideoComposition() {
diff --git a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/ZZHCustomPlayer.swift b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/ZZHCustomPlayer.swift
index 240b12a..0d426c7 100644
--- a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/ZZHCustomPlayer.swift
+++ b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/ZZHCustomPlayer.swift
@@ -9,10 +9,14 @@ import Foundation
import UIKit
import AVKit
+typealias CustomMaskViewTapCallback = ()->Void
class ZZHCustomPlayer: UIView {
-
+ //点击maskview 的回调,主要用于方向旋转
+ var maskViewTapCallback:CustomMaskViewTapCallback?
+ //标记是否为横屏
+ var isLandscape:Bool = false
//视频资源
var sourceVideoURL:URL?
var assetTrack:AVAssetTrack?
@@ -63,7 +67,7 @@ class ZZHCustomPlayer: UIView {
}
}
let playerPauseBgColor:UIColor = UIColor(r: 20, g: 20, b: 20, a: 0.2)//暂停时的背景颜色
-
+ let playerHeight = 230 //播放器默认高度
lazy var maskPlayerView:UIView? = {//播放按钮 背景
let bgView = UIView()
@@ -127,7 +131,7 @@ class ZZHCustomPlayer: UIView {
NotificationCenter.default.addObserver(self, selector: #selector(notification_PlayerEndTime(notification:)), name: AVPlayerItem.didPlayToEndTimeNotification, object: nil)
let playerWidth = KScreenWidth
- let playerHeight = 230
+
playerLayerBgView = UIView()
self.addSubview(playerLayerBgView!)
playerLayerBgView!.snp.makeConstraints { make in
@@ -147,11 +151,17 @@ class ZZHCustomPlayer: UIView {
playerLayerBgView?.backgroundColor = UIColor.red
//添加遮罩视图
- let mpBgView = UIView(frame: avPlayerLayer!.frame)
+ let mpBgView = UIView(frame: .zero)
playerLayerBgView?.addSubview(mpBgView)
+ mpBgView.snp.makeConstraints { make in
+ make.left.top.bottom.right.equalToSuperview()
+ }
self.maskPlayerView?.frame = mpBgView.bounds
mpBgView.addSubview(maskPlayerView!)
+ maskPlayerView?.snp.makeConstraints { make in
+ make.left.top.bottom.right.equalToSuperview()
+ }
let tgr = UITapGestureRecognizer(target: self, action: #selector(tapPlayerMaskView(sender: )))
mpBgView.addGestureRecognizer(tgr)
@@ -168,8 +178,8 @@ class ZZHCustomPlayer: UIView {
timeSlider!.snp.makeConstraints { make in
make.left.equalToSuperview().offset(24)
// make.right.equalToSuperview().offset(-24)
- make.bottom.equalToSuperview().offset(0)
- make.height.equalTo(114)
+ make.bottom.equalToSuperview().offset(-30)
+ make.height.equalTo(84)
}
edBtn = UIButton()
@@ -186,6 +196,28 @@ class ZZHCustomPlayer: UIView {
self.backgroundColor = .orange
}
+ //屏幕旋转时自动隐藏timeSlider、edBtn,同时将播放layer设置为全屏
+ func layoutViewWhenScreenLandscape(value:Bool) {
+ if value {
+ timeSlider?.isHidden = true
+ edBtn?.isHidden = true
+ playerLayerBgView?.snp.updateConstraints { make in
+ make.height.equalTo(KScreenWidth)
+ }
+ self.layoutIfNeeded()
+ avPlayerLayer?.frame = CGRect(x: 0, y: 0, width: KScreenHeight, height: KScreenWidth)
+ }
+ else {
+ timeSlider?.isHidden = false
+ edBtn?.isHidden = false
+ playerLayerBgView?.snp.updateConstraints { make in
+ make.height.equalTo(KScreenWidth)
+ }
+ self.layoutIfNeeded()
+ avPlayerLayer?.frame = CGRect(x: 0, y: 0, width: Int(KScreenWidth), height: playerHeight)
+ }
+ }
+
//显示调节瞳距、缩放的界面
@objc func showEDView(sender:UIButton){
CustomParamBoardView.showBoard(scaleCallback: {[weak self] scale in
@@ -322,6 +354,14 @@ class ZZHCustomPlayer: UIView {
//点击了player 的maskview
@objc func tapPlayerMaskView(sender:UITapGestureRecognizer) {
updatePlayMaskView(!(maskPlayerView!.isHidden))
+ if isLandscape {
+ if let mcallback = maskViewTapCallback {
+ mcallback()
+ }
+ self.timeSlider?.isHidden = !self.timeSlider!.isHidden
+ self.edBtn?.isHidden = !self.edBtn!.isHidden
+ }
+
}
//缩放手势 正在player的maskview进行缩放
diff --git a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/ZZHCustomSlider.swift b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/ZZHCustomSlider.swift
index 30306b0..0d3412f 100644
--- a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/ZZHCustomSlider.swift
+++ b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/ZZHCustomSlider.swift
@@ -9,6 +9,7 @@ import Foundation
import UIKit
typealias CustomSliderProcessChangeValueCallback = (_ currentValue:Float,_ isMoving:Bool)->Void
class ZZHCustomSlider: UIView {
+
var sHeight:CGFloat?
var sLabel:UILabel?
var eLabel:UILabel?
@@ -25,7 +26,7 @@ class ZZHCustomSlider: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
- self.backgroundColor = .black
+ self.backgroundColor = .clear
self.addSubview(bgView)
bgView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
@@ -370,7 +371,7 @@ class CustomParamBoardView: UIView {
make.bottom.equalToSuperview().offset(bgViewHeight)
make.centerX.equalToSuperview()
}
- self.superBgView.backgroundColor = .black
+ self.superBgView.backgroundColor = .clear
// let blackBgView = UIView()
// self.addSubview(blackBgView)