diff --git a/SwiftProject/SwiftProject.xcodeproj/project.pbxproj b/SwiftProject/SwiftProject.xcodeproj/project.pbxproj index 64ed6a6..8bb8662 100644 --- a/SwiftProject/SwiftProject.xcodeproj/project.pbxproj +++ b/SwiftProject/SwiftProject.xcodeproj/project.pbxproj @@ -25,6 +25,10 @@ 0096624A2BB3B45200FCA65F /* ExternalSceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 009662492BB3B45200FCA65F /* ExternalSceneDelegate.swift */; }; 0096624D2BB3BA3B00FCA65F /* ZZHExternalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0096624C2BB3BA3B00FCA65F /* ZZHExternalViewController.swift */; }; 0096625A2BB552E700FCA65F /* CCSpatialVideoDisplayForVideoTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 009662592BB552E700FCA65F /* CCSpatialVideoDisplayForVideoTask.swift */; }; + 009DFB032BC63AF0007B56E8 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 009DFB022BC63AF0007B56E8 /* CoreImage.framework */; }; + 009DFB0E2BC8CFA2007B56E8 /* FeedbackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 009DFB0D2BC8CFA2007B56E8 /* FeedbackView.swift */; }; + 009DFB112BC8E2E9007B56E8 /* MenuVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 009DFB102BC8E2E9007B56E8 /* MenuVC.swift */; }; + 009DFB132BC8EA90007B56E8 /* MenuVCCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 009DFB122BC8EA90007B56E8 /* MenuVCCell.swift */; }; 00B946252B67B7DE00DA668F /* CCSpatialPlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00B946242B67B7DE00DA668F /* CCSpatialPlayView.swift */; }; 00C665732BAA81F900C309C3 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 00C665722BAA81F900C309C3 /* GoogleService-Info.plist */; }; 00C665792BAA94EA00C309C3 /* CopyCrashHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00C665772BAA941E00C309C3 /* CopyCrashHandler.swift */; }; @@ -126,6 +130,10 @@ 009662492BB3B45200FCA65F /* ExternalSceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalSceneDelegate.swift; sourceTree = ""; }; 0096624C2BB3BA3B00FCA65F /* ZZHExternalViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZZHExternalViewController.swift; sourceTree = ""; }; 009662592BB552E700FCA65F /* CCSpatialVideoDisplayForVideoTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CCSpatialVideoDisplayForVideoTask.swift; sourceTree = ""; }; + 009DFB022BC63AF0007B56E8 /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; }; + 009DFB0D2BC8CFA2007B56E8 /* FeedbackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbackView.swift; sourceTree = ""; }; + 009DFB102BC8E2E9007B56E8 /* MenuVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuVC.swift; sourceTree = ""; }; + 009DFB122BC8EA90007B56E8 /* MenuVCCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuVCCell.swift; sourceTree = ""; }; 00B946222B67B26D00DA668F /* ddd_video.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = ddd_video.mp4; sourceTree = ""; }; 00B946242B67B7DE00DA668F /* CCSpatialPlayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CCSpatialPlayView.swift; sourceTree = ""; }; 00C665722BAA81F900C309C3 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; @@ -221,6 +229,7 @@ files = ( AF478B032B577D51005C35A5 /* AVFoundation.framework in Frameworks */, 00EB2D052BA2D59000924D84 /* MessageUI.framework in Frameworks */, + 009DFB032BC63AF0007B56E8 /* CoreImage.framework in Frameworks */, 1E277B76988DF1691E8E5A49 /* Pods_SwiftProject.framework in Frameworks */, 006B61D32BBAA938003FCB49 /* StoreKit.framework in Frameworks */, AF2120D42B4E99FA00400B7F /* MobileCoreServices.framework in Frameworks */, @@ -295,6 +304,23 @@ path = CCSpatialPhotoDisplayController; sourceTree = ""; }; + 009DFB0C2BC8CEC7007B56E8 /* FeedbackView */ = { + isa = PBXGroup; + children = ( + 009DFB0D2BC8CFA2007B56E8 /* FeedbackView.swift */, + ); + path = FeedbackView; + sourceTree = ""; + }; + 009DFB0F2BC8E2D1007B56E8 /* MenuVC */ = { + isa = PBXGroup; + children = ( + 009DFB102BC8E2E9007B56E8 /* MenuVC.swift */, + 009DFB122BC8EA90007B56E8 /* MenuVCCell.swift */, + ); + path = MenuVC; + sourceTree = ""; + }; 1E02C9302B89909000DD3143 /* DeviceOperation */ = { isa = PBXGroup; children = ( @@ -401,6 +427,7 @@ 4D8F3A411661D600CD07B39B /* Frameworks */ = { isa = PBXGroup; children = ( + 009DFB022BC63AF0007B56E8 /* CoreImage.framework */, 006B61D22BBAA938003FCB49 /* StoreKit.framework */, 009661FB2BADB20D00FCA65F /* CoreMotion.framework */, 009661F92BAD876200FCA65F /* PhotosUI.framework */, @@ -538,6 +565,7 @@ AF2120A72B4E83B000400B7F /* Controller */ = { isa = PBXGroup; children = ( + 009DFB0F2BC8E2D1007B56E8 /* MenuVC */, 006B61C82BBA4AF2003FCB49 /* MembershipVC */, 1EEF683C2B8D076B00B953F7 /* VRPreview */, 1E39459C2B83837900D0F5CA /* RecordingVideo */, @@ -554,6 +582,7 @@ AF2120A82B4E83B000400B7F /* View */ = { isa = PBXGroup; children = ( + 009DFB0C2BC8CEC7007B56E8 /* FeedbackView */, 006B61DA2BBCFA54003FCB49 /* CustomSheetController */, 1E1EA28A2B9326DB00A5D5D2 /* CCSpatialDisplayTypeView */, 1EFAF0B42B8AF003002A1773 /* Album */, @@ -758,6 +787,7 @@ 1E1EA2962B936C9600A5D5D2 /* VideoConvertor2.swift in Sources */, AF2120CA2B4E95DA00400B7F /* UITableView+Add.swift in Sources */, 1EFAF0BA2B8AF5EF002A1773 /* UIView+CCExtension.swift in Sources */, + 009DFB0E2BC8CFA2007B56E8 /* FeedbackView.swift in Sources */, AF2120C42B4E95DA00400B7F /* UIImage+Add.swift in Sources */, 1EFAF0C02B8B7A59002A1773 /* VRPhotoTransformController.swift in Sources */, AF21210B2B4EA7FE00400B7F /* CCRequest.swift in Sources */, @@ -772,6 +802,7 @@ 1EFB8C6C2B88D52200C72119 /* CCCommonFile.swift in Sources */, 1EE5C5FA2B8F97BF00EDFC2F /* SpatialVideoWriter.swift in Sources */, 1EFB8C762B88DD1200C72119 /* CCTransformProgressPopView.swift in Sources */, + 009DFB112BC8E2E9007B56E8 /* MenuVC.swift in Sources */, AF2121042B4EA61A00400B7F /* CCMineView.swift in Sources */, AF21210D2B4EA86700400B7F /* RootData.swift in Sources */, AF2121092B4EA7E200400B7F /* CCRequestDefine.swift in Sources */, @@ -795,6 +826,7 @@ 0096624D2BB3BA3B00FCA65F /* ZZHExternalViewController.swift in Sources */, 00D33BFA2B9AB21A00604A44 /* ZZHAVExtension.swift in Sources */, 009661F82BAD6C7100FCA65F /* CCSpaceAlbumFilterPopView2.swift in Sources */, + 009DFB132BC8EA90007B56E8 /* MenuVCCell.swift in Sources */, AF2120E02B4E9C8000400B7F /* Timer+Add.swift in Sources */, 006B61C72BBA499D003FCB49 /* SKUPay.swift in Sources */, AF2120DE2B4E9C3500400B7F /* AppDelegate+Add.swift in Sources */, diff --git a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate index 4017108..3457ec9 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 9404341..38c899d 100644 --- a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -14,8 +14,8 @@ filePath = "SwiftProject/Project/Controller/CCHomeController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "550" - endingLineNumber = "550" + startingLineNumber = "555" + endingLineNumber = "555" landmarkName = "imagePickerController(_:didFinishPickingMediaWithInfo:)" landmarkType = "7"> @@ -30,8 +30,8 @@ filePath = "SwiftProject/Project/Controller/CCHomeController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "542" - endingLineNumber = "542" + startingLineNumber = "547" + endingLineNumber = "547" landmarkName = "CCHomeController" landmarkType = "21"> @@ -94,8 +94,8 @@ filePath = "SwiftProject/Project/Controller/CCHomeController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "506" - endingLineNumber = "506" + startingLineNumber = "511" + endingLineNumber = "511" landmarkName = "gotoVideoTransformVC(url:asset:)" landmarkType = "7"> @@ -467,8 +467,8 @@ filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/CCSpatialVideoDisplayForVideoTask.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "47" - endingLineNumber = "47" + startingLineNumber = "52" + endingLineNumber = "52" landmarkName = "convertFrame(request:)" landmarkType = "7"> @@ -515,8 +515,8 @@ filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/CCSpatialVideoDisplayForVideoTask.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "52" - endingLineNumber = "52" + startingLineNumber = "57" + endingLineNumber = "57" landmarkName = "convertFrame(request:)" landmarkType = "7"> @@ -631,6 +631,70 @@ endingLineNumber = "551" landmarkName = "displayUpdate(caDisplayLink:)" landmarkType = "7"> + + + + + + + + + + + + + + diff --git a/SwiftProject/SwiftProject/Assets.xcassets/Feedback/Contents.json b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_centerbg.imageset/Contents.json b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_centerbg.imageset/Contents.json new file mode 100644 index 0000000..58ae7ea --- /dev/null +++ b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_centerbg.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group_1597880441.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group_1597880441@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group_1597880441@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_centerbg.imageset/Group_1597880441.png b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_centerbg.imageset/Group_1597880441.png new file mode 100644 index 0000000..2f43764 Binary files /dev/null and b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_centerbg.imageset/Group_1597880441.png differ diff --git a/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_centerbg.imageset/Group_1597880441@2x.png b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_centerbg.imageset/Group_1597880441@2x.png new file mode 100644 index 0000000..1fb237a Binary files /dev/null and b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_centerbg.imageset/Group_1597880441@2x.png differ diff --git a/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_centerbg.imageset/Group_1597880441@3x.png b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_centerbg.imageset/Group_1597880441@3x.png new file mode 100644 index 0000000..b2ada49 Binary files /dev/null and b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_centerbg.imageset/Group_1597880441@3x.png differ diff --git a/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_close.imageset/Contents.json b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_close.imageset/Contents.json new file mode 100644 index 0000000..79fa264 --- /dev/null +++ b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_close.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group_1597880438.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group_1597880438@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group_1597880438@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_close.imageset/Group_1597880438.png b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_close.imageset/Group_1597880438.png new file mode 100644 index 0000000..9d728ea Binary files /dev/null and b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_close.imageset/Group_1597880438.png differ diff --git a/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_close.imageset/Group_1597880438@2x.png b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_close.imageset/Group_1597880438@2x.png new file mode 100644 index 0000000..6decc98 Binary files /dev/null and b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_close.imageset/Group_1597880438@2x.png differ diff --git a/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_close.imageset/Group_1597880438@3x.png b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_close.imageset/Group_1597880438@3x.png new file mode 100644 index 0000000..aee63e2 Binary files /dev/null and b/SwiftProject/SwiftProject/Assets.xcassets/Feedback/feedback_close.imageset/Group_1597880438@3x.png differ diff --git a/SwiftProject/SwiftProject/Assets.xcassets/mine/menuvc/Contents.json b/SwiftProject/SwiftProject/Assets.xcassets/mine/menuvc/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/SwiftProject/SwiftProject/Assets.xcassets/mine/menuvc/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftProject/SwiftProject/Assets.xcassets/mine/menuvc/menuvc_backbtn.imageset/Contents.json b/SwiftProject/SwiftProject/Assets.xcassets/mine/menuvc/menuvc_backbtn.imageset/Contents.json new file mode 100644 index 0000000..cb73add --- /dev/null +++ b/SwiftProject/SwiftProject/Assets.xcassets/mine/menuvc/menuvc_backbtn.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Direction.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Direction@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Direction@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftProject/SwiftProject/Assets.xcassets/mine/menuvc/menuvc_backbtn.imageset/Direction.png b/SwiftProject/SwiftProject/Assets.xcassets/mine/menuvc/menuvc_backbtn.imageset/Direction.png new file mode 100644 index 0000000..9856755 Binary files /dev/null and b/SwiftProject/SwiftProject/Assets.xcassets/mine/menuvc/menuvc_backbtn.imageset/Direction.png differ diff --git a/SwiftProject/SwiftProject/Assets.xcassets/mine/menuvc/menuvc_backbtn.imageset/Direction@2x.png b/SwiftProject/SwiftProject/Assets.xcassets/mine/menuvc/menuvc_backbtn.imageset/Direction@2x.png new file mode 100644 index 0000000..fbe1066 Binary files /dev/null and b/SwiftProject/SwiftProject/Assets.xcassets/mine/menuvc/menuvc_backbtn.imageset/Direction@2x.png differ diff --git a/SwiftProject/SwiftProject/Assets.xcassets/mine/menuvc/menuvc_backbtn.imageset/Direction@3x.png b/SwiftProject/SwiftProject/Assets.xcassets/mine/menuvc/menuvc_backbtn.imageset/Direction@3x.png new file mode 100644 index 0000000..d55da5f Binary files /dev/null and b/SwiftProject/SwiftProject/Assets.xcassets/mine/menuvc/menuvc_backbtn.imageset/Direction@3x.png differ diff --git a/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift b/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift index 57df897..55735e2 100644 --- a/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift +++ b/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift @@ -133,6 +133,7 @@ class CCHomeController: BaseController, LLCycleScrollViewDelegate,MFMailComposeV centerView() bottomButton() + } override func viewDidDisappear(_ animated: Bool) { @@ -375,6 +376,10 @@ class CCHomeController: BaseController, LLCycleScrollViewDelegate,MFMailComposeV func addMenu(){ + let vc = MenuVC() + self.navigationController?.pushViewController(vc, animated: true) + return + mBackView = UIView(frame: self.view.bounds) mBackView!.backgroundColor = UIColor.colorWithRGB(_r: 0, _g: 0, _b: 0, alpha: 0.01) diff --git a/SwiftProject/SwiftProject/Project/Controller/MenuVC/MenuVC.swift b/SwiftProject/SwiftProject/Project/Controller/MenuVC/MenuVC.swift new file mode 100644 index 0000000..b46b200 --- /dev/null +++ b/SwiftProject/SwiftProject/Project/Controller/MenuVC/MenuVC.swift @@ -0,0 +1,155 @@ +// +// MenuVC.swift +// SwiftProject +// +// Created by aaa on 2024/4/12. +// + +import Foundation +import UIKit +import Firebase +class MenuVC: BaseController,UITableViewDelegate,UITableViewDataSource { + + static let kMenuVCCell_identifier = "kMenuVCCell_identifier" + var dataSource:[[[String:String]]] { + get { + return [[["image":"icon","title":NSLocalizedString("Share VPCamera", comment: "")], + ["image":"icon","title":NSLocalizedString("Feedback", comment: "")]], + [["image":"icon","title":NSLocalizedString("Privacy Policy", comment: "")], + ["image":"icon","title":NSLocalizedString("Terms of Service", comment: "")]], + [["image":"icon","title":NSLocalizedString("WeChat", comment: "")], + ["image":"icon","title":NSLocalizedString("Tencent QQ", comment: "")], + ["image":"icon","title":NSLocalizedString("Telegram", comment: "")], + ["image":"icon","title":NSLocalizedString("Share VPCamera", comment: "")]]] + } + } + override func viewDidLoad() { + super.viewDidLoad() + self.configureUI() +// self.configureData() +// { +// "default":[{"icon":"xxxxxx","title":"wecht","url":""}, +// {"icon":"xxxxxx","title":"wecht","url":""} +// ], +// "zh":[], +// "en":[] +// +// } +// UIApplication.openURL("tel://") +// "image:d" + } + + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) +// if UserInfo.sharedInstance.isMemberShip {//统计 +// +// Analytics.logEvent("iap_isvip_pv", parameters: nil) +// } +// else { +// Analytics.logEvent("iap_unvip_pv", parameters: nil) +// } + } + + func configureUI() { + self.navLine?.isHidden = true + self.setLeftOneBtnImg(imgStr: "menuvc_backbtn") + self.leftBtn1?.addTarget(self, action: #selector(dismissVC(sender: )), for: .touchUpInside) + self.view.backgroundColor = UIColor(r: 6, g: 5, b: 7, a: 1) + let topView = topView() + self.view.addSubview(topView) + topView.snp.makeConstraints { make in + make.top.equalToSuperview().offset(113) + make.left.right.equalToSuperview() + make.height.equalTo(162) + } + + let bottomView = buttomView() + self.view.addSubview(bottomView) + bottomView.snp.makeConstraints { make in + make.left.right.equalToSuperview() + make.bottom.equalToSuperview().offset(-20) + make.top.equalTo(topView.snp.bottom).offset(0) + } + } + + func topView() -> UIView { + let bgView = UIView() + let imageView = UIImageView() + bgView.addSubview(imageView) + imageView.image = UIImage(named: "AppIcon") + imageView.layer.cornerRadius = 10 + imageView.layer.masksToBounds = true + imageView.snp.makeConstraints { make in + make.width.height.equalTo(86) + make.centerX.equalToSuperview() + make.top.equalToSuperview().offset(0) + } + + let titleLabel = UILabel() + bgView.addSubview(titleLabel) + titleLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(imageView.snp.bottom).offset(8) + } + titleLabel.text = "VPCamera" + titleLabel.textColor = .white + titleLabel.font = UIFont(name: "PingFangSC-Medium", size: 16) + + let verLabel = UILabel() + bgView.addSubview(verLabel) + verLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(titleLabel.snp.bottom).offset(4) + } + verLabel.textColor = UIColor(red: 0.78, green: 0.78, blue: 0.8, alpha: 1) + verLabel.font = UIFont(name: "PingFangSC-Medium", size: 14) + verLabel.text = ZZHHelper.getVersion() + return bgView + } + + func buttomView() -> UIView { + let bgView = UIView() + let tableView = UITableView(frame: .zero, style: .insetGrouped) + tableView.register(MenuVCCell.classForCoder(), forCellReuseIdentifier: MenuVC.kMenuVCCell_identifier) + bgView.addSubview(tableView) + tableView.snp.makeConstraints { make in + make.left.top.bottom.right.equalToSuperview() + } + tableView.backgroundColor = .red + return bgView + } + + @objc func dismissVC(sender:UIButton) { + self.dismiss(animated: true) + } + + + + //MARK: - TableViewDelegate and DataSource + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return 0 + } + + func numberOfSections(in tableView: UITableView) -> Int { + return 3 + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: MenuVC.kMenuVCCell_identifier, for: indexPath) + return cell + } + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + 55 + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + + } + + func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { + return UIView() + } + + +} diff --git a/SwiftProject/SwiftProject/Project/Controller/MenuVC/MenuVCCell.swift b/SwiftProject/SwiftProject/Project/Controller/MenuVC/MenuVCCell.swift new file mode 100644 index 0000000..5898301 --- /dev/null +++ b/SwiftProject/SwiftProject/Project/Controller/MenuVC/MenuVCCell.swift @@ -0,0 +1,40 @@ +// +// MenuVCCell.swift +// SwiftProject +// +// Created by aaa on 2024/4/12. +// + +import Foundation +import UIKit +class MenuVCCell: UITableViewCell { + var limgView:UIImageView? + var ltitleLabel:UILabel? + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + self.backgroundColor = UIColor(r: 29, g: 29, b: 29, a: 1) + limgView = UIImageView() + self.contentView.addSubview(limgView!) + ltitleLabel = UILabel() + self.contentView.addSubview(ltitleLabel!) + + limgView?.snp.makeConstraints({ make in + make.width.height.equalTo(20) + make.centerY.equalToSuperview() + make.left.equalToSuperview().offset(16) + }) + + ltitleLabel?.snp.makeConstraints {[weak self] make in + make.centerY.equalToSuperview() + make.left.equalTo((self?.limgView!.snp.right)!).offset(12) + } + + ltitleLabel!.textColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1) + ltitleLabel!.font = UIFont(name: "PingFangSC-Medium", size: 14) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} diff --git a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/CCSpatialVideoDisplayForVideoTask.swift b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/CCSpatialVideoDisplayForVideoTask.swift index fbb58bf..b934c53 100644 --- a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/CCSpatialVideoDisplayForVideoTask.swift +++ b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialVideoDisplayController/CCSpatialVideoDisplayForVideoTask.swift @@ -40,6 +40,8 @@ extension CCSpatialVideoDisplayController { let tr = CMTimeRange(start: compositionTime, end: end) // let tr_All = CMTimeRange(start: compositionTime, duration: .positiveInfinity) + + var ciImg:CIImage? = nil switch self.selectedIndex { @@ -147,6 +149,7 @@ extension CCSpatialVideoDisplayController { ] ) assetOutput?.supportsRandomAccess = true + assetOutput?.alwaysCopiesSampleData = false assetReader!.timeRange = timeRange assetReader!.add(assetOutput!) assetReader!.startReading() diff --git a/SwiftProject/SwiftProject/Project/Util/PlayByTransferConvertor.swift b/SwiftProject/SwiftProject/Project/Util/PlayByTransferConvertor.swift index f57bf9a..a2de5ee 100644 --- a/SwiftProject/SwiftProject/Project/Util/PlayByTransferConvertor.swift +++ b/SwiftProject/SwiftProject/Project/Util/PlayByTransferConvertor.swift @@ -16,8 +16,11 @@ import ImageIO class PlayByTransferConvertor { func convertVideo(asset:AVAsset, assetOutput:AVAssetReaderTrackOutput,type:SpatialType,time: CMTime)->(CIImage?) { var newpb:CIImage? = nil -// print("sta.....>>>>>>>") + print("sta.....>>>>>>>\(Date.now.timeIntervalSince1970)") while let nextSampleBuffer = assetOutput.copyNextSampleBuffer() { + print("nextSampleBuffer.....+++++++\(Date.now.timeIntervalSince1970)") + return nil + // print("PlayByTransferConvertor while") let presentationTime = CMSampleBufferGetPresentationTimeStamp(nextSampleBuffer) if presentationTime == time { diff --git a/SwiftProject/SwiftProject/Project/Util/ZZHHelper.swift b/SwiftProject/SwiftProject/Project/Util/ZZHHelper.swift index 17d21bb..bca972f 100644 --- a/SwiftProject/SwiftProject/Project/Util/ZZHHelper.swift +++ b/SwiftProject/SwiftProject/Project/Util/ZZHHelper.swift @@ -78,4 +78,13 @@ class ZZHHelper { } return sec } + + class func getVersion()->String { + var verStr = "version" + if let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String { + verStr = "version \(appVersion)" + } else { + } + return verStr + } } diff --git a/SwiftProject/SwiftProject/Project/View/FeedbackView/FeedbackView.swift b/SwiftProject/SwiftProject/Project/View/FeedbackView/FeedbackView.swift new file mode 100644 index 0000000..6740014 --- /dev/null +++ b/SwiftProject/SwiftProject/Project/View/FeedbackView/FeedbackView.swift @@ -0,0 +1,175 @@ +// +// FeedbackView.swift +// SwiftProject +// +// Created by aaa on 2024/4/12. +// + +import Foundation +import UIKit +class FeedbackView: UIView { + var scenterBgView:UIView? + var alphaBgView:UIView? + var praiseCallback:(()->Void?)? = nil + var negativeCallback:(()->Void?)? = nil + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override init(frame: CGRect) { + super.init(frame: frame) + + alphaBgView = UIView() + self.addSubview(alphaBgView!) + alphaBgView!.backgroundColor = UIColor(r: 10, g: 10, b: 10, a: 0.2) + alphaBgView?.alpha = 0 + alphaBgView?.snp.makeConstraints({ make in + make.top.left.right.bottom.equalToSuperview() + }) + + let tgr = UITapGestureRecognizer(target: self, action: #selector(hiddenSelf)) + self.addGestureRecognizer(tgr) + + let centerBgView = UIView() + scenterBgView = centerBgView + self.addSubview(centerBgView) + centerBgView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.centerY.equalToSuperview().offset(KScreenHeight+200) + make.width.equalTo(282) + make.height.equalTo(336) + } + + let centerBg_ImageView = UIImageView() + centerBgView.addSubview(centerBg_ImageView) + centerBg_ImageView.image = UIImage(named: "feedback_centerbg") + centerBg_ImageView.contentMode = .scaleAspectFill + + centerBg_ImageView.snp.makeConstraints { make in + make.top.right.bottom.left.equalToSuperview() + } + + let desLabel = UILabel() + centerBgView.addSubview(desLabel) + desLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(21) + make.right.equalToSuperview().offset(-21) + } + + + desLabel.textColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5) + desLabel.font = UIFont(name: "PingFangSC-Medium", size: 12) + desLabel.numberOfLines = 0 + desLabel.lineBreakMode = .byWordWrapping + desLabel.textAlignment = .center + let paragraphStyle = NSMutableParagraphStyle() + paragraphStyle.lineHeightMultiple = 1 + paragraphStyle.alignment = .center + desLabel.attributedText = NSMutableAttributedString(string: NSLocalizedString("v1.5_feedbackdesc", comment: ""), attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle]) + + + + + + let praiseBtn = UIButton() + centerBgView.addSubview(praiseBtn) + praiseBtn.snp.makeConstraints { make in + make.left.equalToSuperview().offset(26) + make.right.equalToSuperview().offset(-26) + make.height.equalTo(38) + make.top.equalTo(desLabel.snp.bottom).offset(13) + } + praiseBtn.backgroundColor = UIColor(r: 254, g: 50, b: 101, a: 1) + praiseBtn.addTarget(self, action: #selector(praiseAction(sender: )), for: .touchUpInside) + praiseBtn.layer.cornerRadius = 8 + praiseBtn.layer.masksToBounds = true + praiseBtn.setTitle(NSLocalizedString("v1.5_praise", comment: ""), for: .normal) + praiseBtn.titleLabel?.font = UIFont(name: "PingFangSC-Heavy", size: 16) + praiseBtn.setTitleColor(.white, for: .normal) + let negativeBtn = UIButton() + centerBgView.addSubview(negativeBtn) + negativeBtn.addTarget(self, action: #selector(negativeAction(sender: )), for: .touchUpInside) + negativeBtn.snp.makeConstraints { make in + make.left.equalToSuperview().offset(26) + make.right.equalToSuperview().offset(-26) + make.height.equalTo(20) + make.top.equalTo(praiseBtn.snp.bottom).offset(16) + make.bottom.equalToSuperview().offset(-16) + } + negativeBtn.setTitle(NSLocalizedString("v1.5_negative", comment: ""), for: .normal) + negativeBtn.titleLabel?.font = UIFont(name: "PingFangSC-Medium", size: 16) + negativeBtn.setTitleColor(UIColor(red: 0, green: 0, blue: 0, alpha: 0.6), for: .normal) + + let closeBtn = UIButton() + self.addSubview(closeBtn) + closeBtn.setImage(UIImage(named: "feedback_close"), for: .normal) + closeBtn.addTarget(self, action: #selector(closeAction(sender: )), for: .touchUpInside) + closeBtn.snp.makeConstraints { make in + make.width.height.equalTo(32) + make.centerX.equalToSuperview() + make.top.equalTo(centerBgView.snp.bottom).offset(26) + } + } + + @objc func closeAction(sender:UIButton) { + hiddenSelf() + } + + @objc func praiseAction(sender:UIButton) { + hiddenSelf() + guard let praiseCallback else { + return + } + praiseCallback() + } + + @objc func negativeAction(sender:UIButton) { + hiddenSelf() + guard let negativeCallback else { + return + } + negativeCallback() + } + + func show(){ + self.isHidden = false + UIView.animate(withDuration: 0.25) {[weak self] in + self?.scenterBgView!.snp.updateConstraints({ make in + make.centerY.equalToSuperview().offset(0) + }) + self?.alphaBgView?.alpha = 1 + self?.layoutIfNeeded() + } completion: {finish in + } + } + + class func show(praiseCallback:@escaping ()->Void,negativeCallback:@escaping ()->Void) { + let fbView = FeedbackView(frame: .zero) + fbView.praiseCallback = praiseCallback + fbView.negativeCallback = negativeCallback + + fbView.isHidden = true + KWindow?.addSubview(fbView) + fbView.snp.makeConstraints { make in + make.left.top.right.bottom.equalToSuperview() + } + KWindow?.layoutIfNeeded() + fbView.show() + } + + @objc func hiddenSelf() { + UIView.animate(withDuration: 0.25) {[weak self] in + self?.scenterBgView!.snp.updateConstraints({ make in + make.centerY.equalToSuperview().offset(KScreenHeight+200) + }) + self?.alphaBgView?.alpha = 0 + self?.layoutIfNeeded() + } completion: {[weak self] finish in + self?.removeFromSuperview() + } + + } + + +} diff --git a/SwiftProject/SwiftProject/en.lproj/Localizable.strings b/SwiftProject/SwiftProject/en.lproj/Localizable.strings index f13c764..f9ba9fb 100644 --- a/SwiftProject/SwiftProject/en.lproj/Localizable.strings +++ b/SwiftProject/SwiftProject/en.lproj/Localizable.strings @@ -115,3 +115,9 @@ "右侧拨轮下按3s" = "Press right dial 3s"; "右侧中间键长按3s" = "Hold right middle 3s"; "右侧亮度循环按键" ="Right brightness cycle Hold 3s for HSBS, 7s for FSBS"; + + + +"v1.5_praise" = "Praise"; +"v1.5_negative" = "Negative"; +"v1.5_feedbackdesc" = "Do you like VPCamera?\nPlease rate a Five star or give a feed\n back to us"; diff --git a/SwiftProject/SwiftProject/zh-Hans.lproj/Localizable.strings b/SwiftProject/SwiftProject/zh-Hans.lproj/Localizable.strings index f94a571..1a1e054 100644 --- a/SwiftProject/SwiftProject/zh-Hans.lproj/Localizable.strings +++ b/SwiftProject/SwiftProject/zh-Hans.lproj/Localizable.strings @@ -116,3 +116,8 @@ "右侧拨轮下按3s" = "右侧拨轮下按3s"; "右侧中间键长按3s" = "右侧中间键长按3s"; "右侧亮度循环按键" ="右侧亮度循环按键\n长按 3s 切换 HSBS\n长按 7s 切换 FSBS"; + + + + +