123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- //
- // INPhotoVideosController.swift
- // Introduce
- //
- // Created by 胡志强 on 2021/11/29.
- //
- import BFCommonKit
- import BFMaterialKit
- import BFRecordScreenKit
- import BFUIKit
- import Foundation
- import Photos
- import UIKit
- class INPhotoVideosController: BFBaseViewController {
- var chosedAsset: [PHAsset]?
- // 按钮高
- let choseBtnH: CGFloat = cDefaultMargin * 3
- // 按钮宽
- let choseBtnW: CGFloat = cDefaultMargin * 5
- // 间隔
- let margin: CGFloat = 12
- lazy var albumController: BFPhotoAlbumController = {
- let albumController = BFPhotoAlbumController()
- albumController.mediaType = .video
- albumController.isTopShow = true
- albumController.categoryH = cDefaultMargin * 40
- addChild(albumController)
- view.insertSubview(albumController.view, belowSubview: navHeadImageView!)
- albumController.updateViewFrame(frame: CGRect(x: 0, y: navHeadImageView?.frame.maxY ?? cDevice_iPhoneNavBarAndStatusBarHei, width: view.frame.width, height: view.frame.height - (navHeadImageView?.frame.maxY ?? cDevice_iPhoneNavBarAndStatusBarHei)))
- albumController.selectedHandle = { [weak self] seletedData in
- if seletedData != nil {
- self?.albumSelectedHandle(seletedData: seletedData)
- } else {
- self?.changeCollecBtn.isSelected = false
- }
- }
- return albumController
- }()
- lazy var changeCollecBtn: UIButton = {
- let changeCollecBtn = UIButton(frame: CGRect(x: cDefaultMargin * 5, y: cDevice_iPhoneStatusBarHei, width: cScreenWidth - cDefaultMargin * 10, height: cDefaultMargin * 4))
- changeCollecBtn.titleLabel?.lineBreakMode = .byTruncatingTail
- changeCollecBtn.tintColor = BFConfig.shared.styleTitleColor
- changeCollecBtn.setTitle("我的相册", for: .normal)
- changeCollecBtn.setImage(UIImage.moduleImage(named: "icon_selected_down", moduleName: "BFMaterialKit", isAssets: false)?.withRenderingMode(.alwaysTemplate), for: .normal)
- changeCollecBtn.setImage(UIImage.moduleImage(named: "icon_selected_up", moduleName: "BFMaterialKit", isAssets: false)?.withRenderingMode(.alwaysTemplate), for: .selected)
- changeCollecBtn.setTitleColor(BFConfig.shared.styleTitleColor, for: .normal)
- changeCollecBtn.titleLabel?.font = UIFont.systemFont(ofSize: 18, weight: .medium)
- changeCollecBtn.tag = 1
- changeCollecBtn.imagePosition(at: PQButtonImageEdgeInsetsStyle.right, space: cDefaultMargin / 2)
- changeCollecBtn.addTarget(self, action: #selector(btnClick(sender:)), for: .touchUpInside)
- return changeCollecBtn
- }()
- lazy var choseLocalAllBtn: UIButton = {
- let choseLocalAllBtn = UIButton(frame: CGRect(x: (view.frame.width - choseBtnW * 3) / 4, y: cDevice_iPhoneNavBarAndStatusBarHei + margin, width: choseBtnW, height: choseBtnH))
- choseLocalAllBtn.setTitleColor(UIColor.hexColor(hexadecimal: "#999999"), for: .normal)
- choseLocalAllBtn.setTitleColor(BFConfig.shared.styleTitleColor, for: .selected)
- choseLocalAllBtn.setTitle("全部", for: .normal)
- choseLocalAllBtn.titleLabel?.font = UIFont.systemFont(ofSize: 17, weight: .medium)
- choseLocalAllBtn.addCorner(corner: 6)
- choseLocalAllBtn.tag = 10
- choseLocalAllBtn.addTarget(self, action: #selector(btnClick(sender:)), for: .touchUpInside)
- return choseLocalAllBtn
- }()
- lazy var choseLocalVideoBtn: UIButton = {
- let choseLocalVideoBtn = UIButton(frame: CGRect(x: choseLocalAllBtn.frame.maxX + (view.frame.width - choseBtnW * 3) / 4, y: choseLocalAllBtn.frame.minY, width: choseBtnW, height: choseBtnH))
- choseLocalVideoBtn.setTitleColor(UIColor.hexColor(hexadecimal: "#999999"), for: .normal)
- choseLocalVideoBtn.setTitleColor(BFConfig.shared.styleTitleColor, for: .selected)
- choseLocalVideoBtn.setTitle("视频", for: .normal)
- choseLocalVideoBtn.titleLabel?.font = UIFont.systemFont(ofSize: 17, weight: .medium)
- choseLocalVideoBtn.addCorner(corner: 6)
- choseLocalVideoBtn.tag = 11
- choseLocalVideoBtn.isSelected = true
- choseLocalVideoBtn.addTarget(self, action: #selector(btnClick(sender:)), for: .touchUpInside)
- return choseLocalVideoBtn
- }()
- lazy var choseLocalImageBtn: UIButton = {
- let choseLocalImageBtn = UIButton(frame: CGRect(x: choseLocalVideoBtn.frame.maxX + (view.frame.width - choseBtnW * 3) / 4, y: choseLocalAllBtn.frame.minY, width: choseBtnW, height: choseBtnH))
- choseLocalImageBtn.setTitleColor(UIColor.hexColor(hexadecimal: "#999999"), for: .normal)
- choseLocalImageBtn.setTitleColor(BFConfig.shared.styleTitleColor, for: .selected)
- choseLocalImageBtn.setTitle("照片", for: .normal)
- choseLocalImageBtn.titleLabel?.font = UIFont.systemFont(ofSize: 17, weight: .medium)
- choseLocalImageBtn.addCorner(corner: 6)
- choseLocalImageBtn.tag = 12
- choseLocalImageBtn.addTarget(self, action: #selector(btnClick(sender:)), for: .touchUpInside)
- return choseLocalImageBtn
- }()
- lazy var choseLineView: UIView = {
- let choseLineView = UIView(frame: CGRect(x: 0, y: 0, width: 25, height: 3))
- choseLineView.frame.origin.y = (navHeadImageView?.frame.maxY ?? 0) - 6
- choseLineView.center.x = choseLocalVideoBtn.center.x
- choseLineView.backgroundColor = UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue)
- return choseLineView
- }()
- lazy var photoMaterialVc: BFPhotosMaterialController = {
- let vc = BFPhotosMaterialController()
- vc.maxChoseNum = 20
- vc.view.backgroundColor = .black
- vc.updateFrame(newFrame: CGRect(x: 0, y: navHeadImageView?.bottomY ?? 0, width: cScreenWidth, height: cScreenHeigth - cDevice_iPhoneTabBarHei - (navHeadImageView?.bottomY ?? 0)))
- vc.selectedMaterialHandle = { [weak self] _, selectedPhotoData, _, _ in
- self?.chosedAsset = selectedPhotoData
- }
- return vc
- }()
-
- // MARK: - 生命周期
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- showNavigation()
- photoMaterialVc.hiddenNavigation()
- // 清理cache文件
- clearCacheFile(at: exportVideosDirectory)
- clearCacheFile(at: exportAudiosDirectory)
- }
- override func viewDidLoad() {
- super.viewDidLoad()
- leftButton(image: nil, imageName: nil, tintColor: .white)
- navHeadImageView?.backgroundColor = .black
- navHeadImageView?.frame.size.height = cDevice_iPhoneNavBarAndStatusBarHei + margin * 2 + choseBtnH
- navHeadImageView?.addSubview(changeCollecBtn)
- navHeadImageView?.addSubview(choseLocalAllBtn)
- navHeadImageView?.addSubview(choseLocalVideoBtn)
- navHeadImageView?.addSubview(choseLocalImageBtn)
- addChild(photoMaterialVc)
- view.addSubview(photoMaterialVc.view)
- let bottomV = UIView(frame: CGRect(x: 0, y: cScreenHeigth - cDevice_iPhoneTabBarHei, width: cScreenWidth, height: cDevice_iPhoneTabBarHei))
- bottomV.backgroundColor = .black
- view.addSubview(bottomV)
- let nextBtn = UIButton(type: .custom)
- nextBtn.frame = CGRect(x: cScreenWidth - 80, y: 10, width: 70, height: 29)
- nextBtn.backgroundColor = UIColor.hexColor(hexadecimal: "#28BE67")
- nextBtn.setTitle("下一步", for: .normal)
- nextBtn.titleLabel?.font = UIFont.systemFont(ofSize: 12)
- nextBtn.layer.cornerRadius = 4
- nextBtn.addTarget(self, action: #selector(rightBtnClick(sender:)), for: .touchUpInside)
- bottomV.addSubview(nextBtn)
- }
- // MARK: - 按钮点击事件
- /// - Parameter sender: <#sender description#>
- /// - Returns: <#description#>
- @objc func btnClick(sender: UIButton?) {
- switch sender?.tag {
- case 1: // 选择图库
- sender?.isSelected = !(sender?.isSelected ?? false)
- if sender?.isSelected ?? false {
- albumController.showCategoryView()
- } else {
- albumController.dismissCategoryView()
- }
- case 10, 11, 12: // 筛选全部图库
- choseLocalAllBtn.isSelected = sender?.tag == 10
- choseLocalVideoBtn.isSelected = sender?.tag == 11
- choseLocalImageBtn.isSelected = sender?.tag == 12
- if sender?.tag == 11 {
- photoMaterialVc.msgType = .video
- } else if sender?.tag == 12 {
- photoMaterialVc.msgType = .image
- } else {
- photoMaterialVc.msgType = .all
- }
- UIView.animate(withDuration: 0.3, delay: 0, options: .allowUserInteraction) { [weak self] in
- self?.choseLineView.center.x = sender?.center.x ?? 0
- } completion: { _ in
- }
- default:
- break
- }
- }
- /// 图库选择的回调
- /// - Parameter seletedData: <#seletedData description#>
- /// - Returns: <#description#>
- func albumSelectedHandle(seletedData: PHAsset?) {
- changeCollecBtn.isSelected = false
- if seletedData != nil {
- changeCollecBtn.setTitle(seletedData?.title ?? "全部", for: .normal)
- changeCollecBtn.imagePosition(at: PQButtonImageEdgeInsetsStyle.right, space: cDefaultMargin / 2)
- photoMaterialVc.assetCollection = seletedData?.assetCollection
- }
- }
- override func rightBtnClick(sender _: UIButton) {
- if let assets = chosedAsset {
- let vc = INIntroduceController()
- vc.assets = assets
- navigationController?.pushViewController(vc, animated: true)
- } else {
- cShowHUB(superView: nil, msg: "需要选择一个视频")
- }
- }
- func clearCacheFile(at folderPath: String) {
- if let files = try? FileManager.default.contentsOfDirectory(atPath: folderPath) {
- for file in files {
- do {
- try FileManager.default.removeItem(at: URL(fileURLWithPath: folderPath).appendingPathComponent(file))
- } catch {
- BFLog(1, message: "\(error), \(file)")
- }
- }
- }
- }
- // MARK: -
- override open var preferredStatusBarStyle: UIStatusBarStyle {
- return .lightContent
- }
- }
|