diff --git a/SwiftProject/SwiftProject.xcodeproj/project.pbxproj b/SwiftProject/SwiftProject.xcodeproj/project.pbxproj index f7706f3..5021872 100644 --- a/SwiftProject/SwiftProject.xcodeproj/project.pbxproj +++ b/SwiftProject/SwiftProject.xcodeproj/project.pbxproj @@ -9,6 +9,11 @@ /* Begin PBXBuildFile section */ 003624662BA3F0AB0080D014 /* ZZHImageExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 003624652BA3F0AB0080D014 /* ZZHImageExtension.swift */; }; 005580782B9F1525004B9567 /* ZZHHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 005580772B9F1525004B9567 /* ZZHHelper.swift */; }; + 006B61C72BBA499D003FCB49 /* SKUPay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 006B61C62BBA499D003FCB49 /* SKUPay.swift */; }; + 006B61CA2BBA4B0D003FCB49 /* MembershipVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 006B61C92BBA4B0D003FCB49 /* MembershipVC.swift */; }; + 006B61CD2BBA4E3D003FCB49 /* UserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 006B61CC2BBA4E3D003FCB49 /* UserInfo.swift */; }; + 006B61CF2BBA5D0A003FCB49 /* MembershipVCConfigureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 006B61CE2BBA5D0A003FCB49 /* MembershipVCConfigureView.swift */; }; + 006B61D12BBA5DB4003FCB49 /* MembershipProductView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 006B61D02BBA5DB4003FCB49 /* MembershipProductView.swift */; }; 009661F82BAD6C7100FCA65F /* CCSpaceAlbumFilterPopView2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 009661F72BAD6C7100FCA65F /* CCSpaceAlbumFilterPopView2.swift */; }; 009661FA2BAD876200FCA65F /* PhotosUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 009661F92BAD876200FCA65F /* PhotosUI.framework */; }; 009661FC2BADB20D00FCA65F /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 009661FB2BADB20D00FCA65F /* CoreMotion.framework */; }; @@ -103,6 +108,11 @@ /* Begin PBXFileReference section */ 003624652BA3F0AB0080D014 /* ZZHImageExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZZHImageExtension.swift; sourceTree = ""; }; 005580772B9F1525004B9567 /* ZZHHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZZHHelper.swift; sourceTree = ""; }; + 006B61C62BBA499D003FCB49 /* SKUPay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SKUPay.swift; sourceTree = ""; }; + 006B61C92BBA4B0D003FCB49 /* MembershipVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MembershipVC.swift; sourceTree = ""; }; + 006B61CC2BBA4E3D003FCB49 /* UserInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserInfo.swift; sourceTree = ""; }; + 006B61CE2BBA5D0A003FCB49 /* MembershipVCConfigureView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MembershipVCConfigureView.swift; sourceTree = ""; }; + 006B61D02BBA5DB4003FCB49 /* MembershipProductView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MembershipProductView.swift; sourceTree = ""; }; 009661F72BAD6C7100FCA65F /* CCSpaceAlbumFilterPopView2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CCSpaceAlbumFilterPopView2.swift; sourceTree = ""; }; 009661F92BAD876200FCA65F /* PhotosUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PhotosUI.framework; path = System/Library/Frameworks/PhotosUI.framework; sourceTree = SDKROOT; }; 009661FB2BADB20D00FCA65F /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; @@ -217,6 +227,32 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 006B61C52BBA4974003FCB49 /* SKUPay */ = { + isa = PBXGroup; + children = ( + 006B61C62BBA499D003FCB49 /* SKUPay.swift */, + ); + path = SKUPay; + sourceTree = ""; + }; + 006B61C82BBA4AF2003FCB49 /* MembershipVC */ = { + isa = PBXGroup; + children = ( + 006B61C92BBA4B0D003FCB49 /* MembershipVC.swift */, + 006B61CE2BBA5D0A003FCB49 /* MembershipVCConfigureView.swift */, + 006B61D02BBA5DB4003FCB49 /* MembershipProductView.swift */, + ); + path = MembershipVC; + sourceTree = ""; + }; + 006B61CB2BBA4E30003FCB49 /* UserInfo */ = { + isa = PBXGroup; + children = ( + 006B61CC2BBA4E3D003FCB49 /* UserInfo.swift */, + ); + path = UserInfo; + sourceTree = ""; + }; 0096624B2BB3BA0100FCA65F /* ExternalScreen */ = { isa = PBXGroup; children = ( @@ -402,6 +438,8 @@ AF2120A12B4E83AF00400B7F /* CCKit */ = { isa = PBXGroup; children = ( + 006B61CB2BBA4E30003FCB49 /* UserInfo */, + 006B61C52BBA4974003FCB49 /* SKUPay */, 1EFB8C6A2B88D4FF00C72119 /* Config */, AF2120BA2B4E95AF00400B7F /* Add */, AF2120A22B4E83AF00400B7F /* Kit */, @@ -476,6 +514,7 @@ AF2120A72B4E83B000400B7F /* Controller */ = { isa = PBXGroup; children = ( + 006B61C82BBA4AF2003FCB49 /* MembershipVC */, 1EEF683C2B8D076B00B953F7 /* VRPreview */, 1E39459C2B83837900D0F5CA /* RecordingVideo */, 00B946222B67B26D00DA668F /* ddd_video.mp4 */, @@ -700,6 +739,7 @@ AF21210B2B4EA7FE00400B7F /* CCRequest.swift in Sources */, AF2120D82B4E9AC500400B7F /* CCAddImageView.swift in Sources */, 00D33BF42B998BF700604A44 /* SpatialImageConvertor.swift in Sources */, + 006B61CA2BBA4B0D003FCB49 /* MembershipVC.swift in Sources */, AF2120B32B4E94BE00400B7F /* CCDefine.swift in Sources */, 1EEF683E2B8D079600B953F7 /* CCVRPreviewController.swift in Sources */, 04E1D3F12B68EDFE00743F2F /* CCWebController.swift in Sources */, @@ -731,6 +771,7 @@ 00D33BFA2B9AB21A00604A44 /* ZZHAVExtension.swift in Sources */, 009661F82BAD6C7100FCA65F /* CCSpaceAlbumFilterPopView2.swift in Sources */, AF2120E02B4E9C8000400B7F /* Timer+Add.swift in Sources */, + 006B61C72BBA499D003FCB49 /* SKUPay.swift in Sources */, AF2120DE2B4E9C3500400B7F /* AppDelegate+Add.swift in Sources */, 1EFB8C6E2B88D9D800C72119 /* CCBottomMenuPopView.swift in Sources */, 003624662BA3F0AB0080D014 /* ZZHImageExtension.swift in Sources */, @@ -745,15 +786,18 @@ 009662442BB2B93C00FCA65F /* SceneDelegate.swift in Sources */, AF2120AB2B4E848400400B7F /* RootNavigationController.swift in Sources */, AF2120C92B4E95DA00400B7F /* UIDevice+Add.swift in Sources */, + 006B61CD2BBA4E3D003FCB49 /* UserInfo.swift in Sources */, AF2120AF2B4E930400400B7F /* RootManager.swift in Sources */, 1E02C9322B8990C600DD3143 /* CCDeviceOperationListView.swift in Sources */, AF2120DA2B4E9BD400400B7F /* CCAlert.swift in Sources */, + 006B61D12BBA5DB4003FCB49 /* MembershipProductView.swift in Sources */, 0096625A2BB552E700FCA65F /* CCSpatialVideoDisplayForVideoTask.swift in Sources */, 1EFB8C702B88DA4800C72119 /* CCBottomMenuCell.swift in Sources */, AF2120FA2B4EA5BD00400B7F /* CCHomeController.swift in Sources */, 00ED6B342BA04AC200915BDE /* PlayByTransferConvertor.swift in Sources */, AF2121072B4EA63000400B7F /* CCHomeData.swift in Sources */, AF2120FE2B4EA5F100400B7F /* CCLoginController.swift in Sources */, + 006B61CF2BBA5D0A003FCB49 /* MembershipVCConfigureView.swift in Sources */, AF2120CE2B4E979500400B7F /* CCTextField.swift in Sources */, 1E1EA2882B9325D300A5D5D2 /* CCSpatialPhotoDisplayController.swift in Sources */, ); diff --git a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate index 9aba9c8..e0163a8 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 02c0bff..e75f66e 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 = "502" - endingLineNumber = "502" + startingLineNumber = "514" + endingLineNumber = "514" landmarkName = "imagePickerController(_:didFinishPickingMediaWithInfo:)" landmarkType = "7"> @@ -30,8 +30,8 @@ filePath = "SwiftProject/Project/Controller/CCHomeController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "494" - endingLineNumber = "494" + startingLineNumber = "506" + endingLineNumber = "506" landmarkName = "CCHomeController" landmarkType = "21"> @@ -94,8 +94,8 @@ filePath = "SwiftProject/Project/Controller/CCHomeController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "458" - endingLineNumber = "458" + startingLineNumber = "470" + endingLineNumber = "470" landmarkName = "gotoVideoTransformVC(url:asset:)" landmarkType = "7"> @@ -615,6 +615,38 @@ endingLineNumber = "442" landmarkName = "navgationButtonClick2(sender:)" landmarkType = "7"> + + + + + + diff --git a/SwiftProject/SwiftProject/CCKit/SKUPay/SKUPay.swift b/SwiftProject/SwiftProject/CCKit/SKUPay/SKUPay.swift new file mode 100644 index 0000000..e43060a --- /dev/null +++ b/SwiftProject/SwiftProject/CCKit/SKUPay/SKUPay.swift @@ -0,0 +1,11 @@ +// +// SKUPay.swift +// SwiftProject +// +// Created by aaa on 2024/4/1. +// + +import Foundation +class SKUPay { + +} diff --git a/SwiftProject/SwiftProject/CCKit/UserInfo/UserInfo.swift b/SwiftProject/SwiftProject/CCKit/UserInfo/UserInfo.swift new file mode 100644 index 0000000..7c6a7e9 --- /dev/null +++ b/SwiftProject/SwiftProject/CCKit/UserInfo/UserInfo.swift @@ -0,0 +1,17 @@ +// +// UserInfo.swift +// SwiftProject +// +// Created by aaa on 2024/4/1. +// + +import Foundation +class UserInfo: NSObject { + static let sharedInstance = UserInfo() + + var isMemberShip:Bool { + get { + return false + } + } +} diff --git a/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift b/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift index 1f03107..57b2dca 100644 --- a/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift +++ b/SwiftProject/SwiftProject/Project/Controller/CCHomeController.swift @@ -287,6 +287,7 @@ class CCHomeController: BaseController, LLCycleScrollViewDelegate,MFMailComposeV mBottomBtn3?.setBackgroundImage(UIImage.init(named: NSLocalizedString("home_card_2", comment: "")), for: UIControl.State.normal) } + //MARK: - 打开相机、相薄、图库 @objc public func navgationButtonClick2(sender:UIButton){ print("nihao") @@ -297,8 +298,19 @@ class CCHomeController: BaseController, LLCycleScrollViewDelegate,MFMailComposeV } if sender.tag == 20 { - let vc:CCSpatialShootController = CCSpatialShootController() - self.navigationController?.pushViewController(vc, animated: true) + if UserInfo.sharedInstance.isMemberShip { + let vc:CCSpatialShootController = CCSpatialShootController() + self.navigationController?.pushViewController(vc, animated: true) + } + else { + let vc:MembershipVC = MembershipVC() + let nav = UINavigationController(rootViewController: vc) +// self.navigationController?.pushViewController(vc, animated: true) + nav.modalTransitionStyle = UIModalTransitionStyle.coverVertical + nav.modalPresentationStyle = .fullScreen + self.present(nav, animated: true) + } + }else if sender.tag == 21{ //空间转码 // gotoSpatialPlayVC() diff --git a/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipProductView.swift b/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipProductView.swift new file mode 100644 index 0000000..1e06b66 --- /dev/null +++ b/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipProductView.swift @@ -0,0 +1,183 @@ +// +// MembershipProductView.swift +// SwiftProject +// +// Created by aaa on 2024/4/1. +// + +import Foundation +import UIKit +//数据源模型 +//MARK: - MemberShipModelItem +class MemberShipModelItem: NSObject { + var title:String? + var desc:String? + var rightDesc:String? + var isSelected:Bool = false +} + +//MARK: - MembershipProductView +typealias MembershipProductViewCallback = (_ item:MemberShipModelItem?)->() + +class MembershipProductView: UIView ,UITableViewDataSource,UITableViewDelegate{ + var tableView:UITableView? + var dataSource:[MemberShipModelItem] = [] + var selectedItem:MemberShipModelItem? + let kMembershipViewCell_identifier = "kMembershipViewCell_identifier" + var selectCallback:MembershipProductViewCallback? + + required public init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override init(frame: CGRect) { + super.init(frame: frame) + tableView = UITableView.init(frame: .zero, style: .plain) + self.addSubview(tableView!) + tableView?.snp.makeConstraints({ make in + make.left.top.right.bottom.equalToSuperview() + }) + + tableView?.delegate = self + tableView?.dataSource = self + tableView?.register(MembershipViewCell.classForCoder(), forCellReuseIdentifier: kMembershipViewCell_identifier) + tableView?.separatorStyle = .none + tableView?.isScrollEnabled = false + tableView?.showsHorizontalScrollIndicator = false + } + + func setData(_ dataArr:[MemberShipModelItem]?,selectedItem:MemberShipModelItem?) { + dataSource.removeAll() + guard let ad = dataArr else { + return + } + dataSource.append(contentsOf: ad) + self.selectedItem = selectedItem + + tableView?.reloadData() + } + + //MARK: - UITableViewDataSource,UITableViewDelegate + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return self.dataSource.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell:MembershipViewCell = tableView.dequeueReusableCell(withIdentifier: kMembershipViewCell_identifier, for: indexPath) as! MembershipViewCell + let item = self.dataSource[indexPath.row] + cell.setItemData(item) + cell.selectionStyle = .none + return cell + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + let item = self.dataSource[indexPath.row] + if let si = selectedItem { + si.isSelected = false + } + item.isSelected = true + selectedItem = item + tableView.reloadData() + guard let callback = self.selectCallback else { + return + } + callback(item) + } + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + return 66 + } + +} + +//MARK: - MembershipViewCell +class MembershipViewCell: UITableViewCell { + var item:MemberShipModelItem? + var bgView:UIView? + var rightDescBtn:UIButton? + var leftTitleLabel:UILabel? + var leftDescLabel:UILabel? + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + bgView = UIView() + self.contentView.addSubview(bgView!) + bgView?.layer.cornerRadius = 10 + bgView?.layer.masksToBounds = true + bgView?.layer.borderWidth = 2 + + bgView?.snp.makeConstraints { make in + make.left.equalToSuperview().offset(4) + make.top.equalToSuperview().offset(2) + make.bottom.equalToSuperview().offset(-2) + make.right.equalToSuperview().offset(-4) + } + + leftTitleLabel = UILabel() + bgView?.addSubview(leftTitleLabel!) + leftTitleLabel?.textColor = .black + leftTitleLabel?.font = UIFont.systemFont(ofSize: 16) + leftTitleLabel?.snp.makeConstraints { make in + make.left.equalToSuperview().offset(6) + make.top.equalToSuperview().offset(6) + } + + leftDescLabel = UILabel() + bgView?.addSubview(leftDescLabel!) + leftDescLabel?.textColor = .gray + leftDescLabel?.font = UIFont.systemFont(ofSize: 12) + leftDescLabel?.snp.makeConstraints {[weak self] make in + make.left.equalToSuperview().offset(6) + make.top.equalTo(self!.leftTitleLabel!.snp.bottom).offset(6) + } + + rightDescBtn = UIButton() + rightDescBtn?.isUserInteractionEnabled = false + self.contentView.addSubview(rightDescBtn!) + rightDescBtn?.setBackgroundImage(UIImage(named: "BG_Top"), for: .normal) + rightDescBtn?.titleLabel?.font = UIFont.systemFont(ofSize: 12) + rightDescBtn?.setTitleColor(.white, for: .normal) + rightDescBtn?.snp.makeConstraints { make in + make.right.equalToSuperview().offset(0) + make.top.equalToSuperview().offset(0) + make.height.equalTo(30) + make.width.equalTo(120) + } + } + + func setItemData(_ item:MemberShipModelItem?) { + + self.item = item + self.item?.addObserver(self, forKeyPath: "isSelected", context: nil) + rightDescBtn?.setTitle(item?.rightDesc, for: .normal) + leftTitleLabel?.text = item?.title + leftDescLabel?.text = item?.desc + updateCellUI() + + } + + func updateCellUI(){ + guard let it = item else { + return + } + if it.isSelected == true{ + bgView?.backgroundColor = .gray + bgView?.layer.borderColor = UIColor.black.cgColor + } + else{ + bgView?.backgroundColor = .lightGray + bgView?.layer.borderColor = UIColor.gray.cgColor + } + } + + + + + + deinit { + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipVC.swift b/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipVC.swift new file mode 100644 index 0000000..fa07031 --- /dev/null +++ b/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipVC.swift @@ -0,0 +1,31 @@ +// +// MembershipVC.swift +// SwiftProject +// +// Created by aaa on 2024/4/1. +// + +import Foundation +import UIKit +class MembershipVC: BaseController { + var pvView:MembershipProductView? + var selectedItem:MemberShipModelItem? + + override func viewDidLoad() { + super.viewDidLoad() + self.configureUI() + self.configureData() + } + + + + override func viewDidDisappear(_ animated: Bool) { + super.viewDidDisappear(animated) + } + + deinit { + print("MembershipVC...deinit") + } + +} + diff --git a/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipVCConfigureView.swift b/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipVCConfigureView.swift new file mode 100644 index 0000000..4e52152 --- /dev/null +++ b/SwiftProject/SwiftProject/Project/Controller/MembershipVC/MembershipVCConfigureView.swift @@ -0,0 +1,262 @@ +// +// MembershipVCConfigureView.swift +// SwiftProject +// +// Created by aaa on 2024/4/1. +// + +import Foundation +import UIKit +extension MembershipVC { + + + func configureUI() { + self.navLine?.isHidden = true + self.setLeftOneBtnImg(imgStr: "Icon_Close_Top") + self.leftBtn1?.addTarget(self, action: #selector(dismissVC(sender: )), for: .touchUpInside) + self.setRightOneBtnImg(imgStr: "Icon_PopUp_Icon_Folder") + self.rightBtn1?.addTarget(self, action: #selector(buyMembership(sender: )), for: .touchUpInside) + let topView = self.topView() + self.view.addSubview(topView) + topView.snp.makeConstraints { make in + make.left.right.equalTo(0) + make.top.equalToSuperview().offset(120) + make.height.equalTo(150) + } + + let centerView = self.centerView() + self.view.addSubview(centerView) + centerView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(20) + make.right.equalToSuperview().offset(-20) + make.top.equalTo(topView.snp.bottom).offset(20) + make.height.equalTo(210) + } + + let bottomView = self.bottomView() + self.view .addSubview(bottomView) + bottomView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(20) + make.right.equalToSuperview().offset(-20) + make.top.equalTo(centerView.snp.bottom).offset(20) + make.bottom.equalToSuperview() + } + } + + + @objc func dismissVC(sender:UIButton) { + self.dismiss(animated: true) + + } + + //MARK: - 购买会员 + @objc func buyMembership(sender:UIButton) { + + } + func topView() -> UIView { + let bgView = UIView() + bgView.backgroundColor = .white + let imgView_1 = UIImageView(image: UIImage(named: "logo")) + bgView.addSubview(imgView_1) + imgView_1.snp.makeConstraints { make in + make.height.width.equalTo(30) + } + + let titleLabel = UILabel() + bgView.addSubview(titleLabel) + titleLabel.text = NSLocalizedString("VPcamera", comment: "") + titleLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalToSuperview().offset(8) + make.centerY.equalTo(imgView_1.snp.centerY) + make.left.equalTo(imgView_1.snp.right).offset(4) + } + + let imgView_2 = UIImageView(image: UIImage(named: "logo")) + bgView.addSubview(imgView_2) + imgView_2.snp.makeConstraints { make in + make.centerY.equalTo(titleLabel.snp.centerY) + make.height.width.equalTo(30) + make.left.equalTo(titleLabel.snp.right).offset(4) + } + + let siView_1 = shipItemView("logo", NSLocalizedString("membershipdesc_1", comment: "")) + bgView.addSubview(siView_1) + let siView_2 = shipItemView("logo", NSLocalizedString("membershipdesc_2", comment: "")) + bgView.addSubview(siView_2) + let siView_3 = shipItemView("logo", NSLocalizedString("membershipdesc_3", comment: "")) + bgView.addSubview(siView_3) + let siView_4 = shipItemView("logo", NSLocalizedString("membershipdesc_4", comment: "")) + bgView.addSubview(siView_4) + + siView_1.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(titleLabel.snp.bottom).offset(20) + } + siView_2.snp.makeConstraints { make in + make.left.equalTo(siView_1.snp.left) + make.top.equalTo(siView_1.snp.bottom).offset(4) + } + + siView_3.snp.makeConstraints { make in + make.left.equalTo(siView_2.snp.left) + make.top.equalTo(siView_2.snp.bottom).offset(4) + } + + siView_4.snp.makeConstraints { make in + make.left.equalTo(siView_3.snp.left) + make.top.equalTo(siView_3.snp.bottom).offset(4) + } + + return bgView + } + + func shipItemView(_ imageName:String,_ desc:String) -> UIView { + let bgView = UIView() + let imgView = UIImageView() + imgView.image = UIImage(named: imageName) + bgView.addSubview(imgView) + let descLabel = UILabel() + descLabel.text = desc + bgView.addSubview(descLabel) + + imgView.snp.makeConstraints { make in + make.height.width.equalTo(20) + make.left.equalToSuperview() + make.top.bottom.equalToSuperview() + } + + descLabel.snp.makeConstraints { make in + make.right.equalToSuperview() + make.top.bottom.equalToSuperview() + make.left.equalTo(imgView.snp.right).offset(3) + } + return bgView + } + + func centerView() -> UIView { + let bgView = UIView() + bgView.backgroundColor = .white + pvView = MembershipProductView(frame: .zero) + bgView.addSubview(pvView!) + pvView?.snp.makeConstraints { make in + make.left.right.top.bottom.equalToSuperview() + } + pvView?.selectCallback = {[weak self] item in + print("选择....\(item)") + self?.selectedItem = item + } + return bgView + } + + //测试数据 + func configureData(){ + var arr:[MemberShipModelItem] = [] + for i in 0 ..< 3 { + let item = MemberShipModelItem() + item.title = "$9.9/周" + item.desc = "低至$0.14/天" + item.rightDesc = "90%人选择" + item.isSelected = false + arr.append(item) + } + let item = arr[1] + item.isSelected = true + selectedItem = item + pvView?.setData(arr,selectedItem:selectedItem) + } + + func bottomView()->UIView { + let bgView = UIView() + bgView.backgroundColor = .white + let btn_privateBtn = UIButton() + bgView.addSubview(btn_privateBtn) + btn_privateBtn.addTarget(self, action: #selector(goWeb(sender: )), for: .touchUpInside) + btn_privateBtn.setTitle(NSLocalizedString("隐私政策", comment: ""), for: .normal) + btn_privateBtn.titleLabel?.font = UIFont.systemFont(ofSize: 12) + btn_privateBtn.setTitleColor(.gray, for: .normal) + btn_privateBtn.tag = 1 + btn_privateBtn.snp.makeConstraints { make in + make.top.equalToSuperview() + + } + + + let line = UIView() + bgView.addSubview(line) + line.backgroundColor = .gray + line.snp.makeConstraints { make in + make.width.equalTo(1) + make.height.equalTo(10) + make.centerX.equalToSuperview() + make.centerY.equalTo(btn_privateBtn.snp.centerY) + make.left.equalTo(btn_privateBtn.snp.right).offset(30) + } + + let btn_userBtn = UIButton() + bgView.addSubview(btn_userBtn) + btn_userBtn.addTarget(self, action: #selector(goWeb(sender: )), for: .touchUpInside) + btn_userBtn.setTitle(NSLocalizedString("用户协议", comment: ""), for: .normal) + btn_userBtn.titleLabel?.font = UIFont.systemFont(ofSize: 12) + btn_userBtn.setTitleColor(.gray, for: .normal) + btn_userBtn.tag = 2 + btn_userBtn.snp.makeConstraints { make in + make.top.equalToSuperview() + make.left.equalTo(line.snp.right).offset(30) + } + + let subscribeBtn = UIButton() + bgView.addSubview(subscribeBtn) + subscribeBtn.addTarget(self, action: #selector(subscribeAction(sender: )), for: .touchUpInside) + subscribeBtn.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16) + subscribeBtn.setTitleColor(.white, for: .normal) + subscribeBtn.setTitle(NSLocalizedString("Free Trail 3 Days", comment: ""), for: .normal) + subscribeBtn.backgroundColor = .darkText + subscribeBtn.layer.masksToBounds = true + subscribeBtn.layer.cornerRadius = 16 + subscribeBtn.snp.makeConstraints { make in + make.top.equalTo(btn_privateBtn.snp.bottom).offset(20) + make.centerX.equalToSuperview() + make.height.equalTo(60) + make.left.equalToSuperview().offset(20) + make.right.equalToSuperview().offset(-20) + } + + let descLabel = UILabel() + bgView.addSubview(descLabel) + descLabel.numberOfLines = 0 + descLabel.font = UIFont.systemFont(ofSize: 12) + descLabel.textColor = .lightGray + descLabel.text = NSLocalizedString("subscribDesc", comment: "") + descLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(20) + make.right.equalToSuperview().offset(-20) + make.top.equalTo(subscribeBtn.snp.bottom).offset(20) + } + + return bgView + } + + //MARK: - 跳转web + @objc func goWeb(sender:UIButton) { + if sender.tag == 1 {//隐私政策 + let vc:CCWebController = CCWebController() + let sizeUrl = NSLocalizedString("siteUrl", comment: "隐私政策url") + vc.urlString = sizeUrl + self.navigationController?.pushViewController(vc, animated: true) + } + else if sender.tag == 2{//用户协议 + let vc:CCWebController = CCWebController() + let sizeUrl = NSLocalizedString("userSiteUrl", comment: "用户协议url") + vc.urlString = sizeUrl + self.navigationController?.pushViewController(vc, animated: true) + + } + } + + //MARK: - 订阅 + @objc func subscribeAction(sender:UIButton) { + + } + +} diff --git a/SwiftProject/SwiftProject/en.lproj/Localizable.strings b/SwiftProject/SwiftProject/en.lproj/Localizable.strings index fc5b794..9f216f7 100644 --- a/SwiftProject/SwiftProject/en.lproj/Localizable.strings +++ b/SwiftProject/SwiftProject/en.lproj/Localizable.strings @@ -77,3 +77,15 @@ "开始串流" = "Start Streaming"; "空间图片保存失败" = "Spatial Photo Save Failed"; "空间视频保存失败" = "Spatial Video Save Failed"; + + + +"VPcamera" = "VPcamera"; +"membershipdesc_1" = "Preview larger spatial videos"; +"membershipdesc_2" = "Capture spatial photo"; +"membershipdesc_3" = "Export Higher Quality"; +"membershipdesc_4" = "No Ads"; +"Free Trail 3 Days" = "Free Trail 3 Days"; +"subscribDesc" = "免费试用3天,试用结束后,按照图示费用进行续费,您可以随时在Tunes Store中取消订阅.若已订阅过或已付费成功却未显示,可使用相同AppleID恢复会员.确认购买后将从iTunes账户扣款,自动续订会在到期前24小时内扣款,可前往AppleID管理页面关闭订阅."; +"用户协议" = "用户协议"; +"userSiteUrl" = "https://www.wolai.com/9BZr3sEbpbXJEUorHEyAoP"; diff --git a/SwiftProject/SwiftProject/zh-Hans.lproj/Localizable.strings b/SwiftProject/SwiftProject/zh-Hans.lproj/Localizable.strings index 3adec0e..8799198 100644 --- a/SwiftProject/SwiftProject/zh-Hans.lproj/Localizable.strings +++ b/SwiftProject/SwiftProject/zh-Hans.lproj/Localizable.strings @@ -80,3 +80,14 @@ "空间图片保存失败" = ""; "空间视频保存失败" = ""; + + +"VPcamera" = "VPcamera"; +"membershipdesc_1" = "Preview larger spatial videos"; +"membershipdesc_2" = "Capture spatial photo"; +"membershipdesc_3" = "Export Higher Quality"; +"membershipdesc_4" = "No Ads"; +"Free Trail 3 Days" = "Free Trail 3 Days"; +"subscribDesc" = "免费试用3天,试用结束后,按照图示费用进行续费,您可以随时在Tunes Store中取消订阅.若已订阅过或已付费成功却未显示,可使用相同AppleID恢复会员.确认购买后将从iTunes账户扣款,自动续订会在到期前24小时内扣款,可前往AppleID管理页面关闭订阅."; +"用户协议" = "用户协议"; +"userSiteUrl" = "https://www.wolai.com/9BZr3sEbpbXJEUorHEyAoP";