PhotoVideoListController.swift 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. //
  2. // PhotoVideoListController.swift
  3. // BFRecordScreenKit_Example
  4. //
  5. // Created by 胡志强 on 2021/11/23.
  6. // Copyright © 2021 CocoaPods. All rights reserved.
  7. //
  8. import BFCommonKit
  9. import BFMaterialKit
  10. import BFRecordScreenKit
  11. import BFUIKit
  12. import Foundation
  13. import Photos
  14. import UIKit
  15. class PhotoVideoListController: BFBaseViewController {
  16. var chosedAsset: PHAsset?
  17. lazy var albumController: BFPhotoAlbumController = {
  18. let albumController = BFPhotoAlbumController()
  19. albumController.mediaType = .video
  20. albumController.isTopShow = true
  21. albumController.categoryH = cDefaultMargin * 40
  22. addChildViewController(albumController)
  23. view.insertSubview(albumController.view, belowSubview: navHeadImageView!)
  24. 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)))
  25. albumController.selectedHandle = { [weak self] seletedData in
  26. if seletedData != nil {
  27. self?.albumSelectedHandle(seletedData: seletedData)
  28. } else {
  29. self?.changeCollecBtn.isSelected = false
  30. }
  31. }
  32. return albumController
  33. }()
  34. lazy var changeCollecBtn: UIButton = {
  35. let changeCollecBtn = UIButton(frame: CGRect(x: cDefaultMargin * 5, y: cDevice_iPhoneStatusBarHei, width: cScreenWidth - cDefaultMargin * 10, height: cDefaultMargin * 4))
  36. changeCollecBtn.titleLabel?.lineBreakMode = .byTruncatingTail
  37. changeCollecBtn.tintColor = BFConfig.shared.styleTitleColor
  38. changeCollecBtn.setTitle("我的相册", for: .normal)
  39. changeCollecBtn.setImage(UIImage.moduleImage(named: "icon_selected_down", moduleName: "BFFramework", isAssets: false)?.withRenderingMode(.alwaysTemplate), for: .normal)
  40. changeCollecBtn.setImage(UIImage.moduleImage(named: "icon_selected_up", moduleName: "BFFramework", isAssets: false)?.withRenderingMode(.alwaysTemplate), for: .selected)
  41. changeCollecBtn.setTitleColor(BFConfig.shared.styleTitleColor, for: .normal)
  42. changeCollecBtn.titleLabel?.font = UIFont.systemFont(ofSize: 18, weight: .medium)
  43. changeCollecBtn.tag = 1
  44. changeCollecBtn.imagePosition(at: PQButtonImageEdgeInsetsStyle.right, space: cDefaultMargin / 2)
  45. changeCollecBtn.addTarget(self, action: #selector(btnClick(sender:)), for: .touchUpInside)
  46. return changeCollecBtn
  47. }()
  48. lazy var photoMaterialVc: BFPhotosMaterialController = {
  49. let vc = BFPhotosMaterialController()
  50. vc.view.backgroundColor = .black
  51. vc.updateFrame(newFrame: CGRect(x: 0, y: cDevice_iPhoneNavBarAndStatusBarHei, width: cScreenWidth, height: cScreenHeigth - cDevice_iPhoneNavBarAndStatusBarHei - cDevice_iPhoneTabBarHei))
  52. vc.selectedMaterialHandle = { [weak self] currentMaterialData, selectedPhotoData, _, _ in
  53. if currentMaterialData?.isSelected ?? false {
  54. self?.chosedAsset = currentMaterialData
  55. if selectedPhotoData.count == 2 {
  56. cShowHUB(superView: nil, msg: "临时:最新选择的视频是有效的视频")
  57. }
  58. } else {
  59. self?.chosedAsset = selectedPhotoData.first
  60. }
  61. }
  62. return vc
  63. }()
  64. override func viewWillAppear(_ animated: Bool) {
  65. super.viewWillAppear(animated)
  66. showNavigation()
  67. photoMaterialVc.hiddenNavigation()
  68. }
  69. override func viewDidLoad() {
  70. super.viewDidLoad()
  71. leftButton(image: nil, imageName: nil, tintColor: .white)
  72. navHeadImageView?.backgroundColor = .black
  73. navHeadImageView?.addSubview(changeCollecBtn)
  74. addChildViewController(photoMaterialVc)
  75. view.addSubview(photoMaterialVc.view)
  76. let bottomV = UIView(frame: CGRect(x: 0, y: cScreenHeigth - cDevice_iPhoneTabBarHei, width: cScreenWidth, height: cDevice_iPhoneTabBarHei))
  77. bottomV.backgroundColor = .black
  78. view.addSubview(bottomV)
  79. let nextBtn = UIButton(type: .custom)
  80. nextBtn.frame = CGRect(x: cScreenWidth - 80, y: 10, width: 70, height: 29)
  81. nextBtn.backgroundColor = UIColor.hexColor(hexadecimal: "#28BE67")
  82. nextBtn.setTitle("下一步", for: .normal)
  83. nextBtn.layer.cornerRadius = 4
  84. nextBtn.addTarget(self, action: #selector(rightBtnClick(sender:)), for: .touchUpInside)
  85. bottomV.addSubview(nextBtn)
  86. }
  87. /// 按钮点击事件
  88. /// - Parameter sender: <#sender description#>
  89. /// - Returns: <#description#>
  90. @objc func btnClick(sender: UIButton?) {
  91. switch sender?.tag {
  92. case 1: // 选择图库
  93. sender?.isSelected = !(sender?.isSelected ?? false)
  94. if sender?.isSelected ?? false {
  95. albumController.showCategoryView()
  96. } else {
  97. albumController.dismissCategoryView()
  98. }
  99. default:
  100. break
  101. }
  102. }
  103. /// 图库选择的回调
  104. /// - Parameter seletedData: <#seletedData description#>
  105. /// - Returns: <#description#>
  106. func albumSelectedHandle(seletedData: PHAsset?) {
  107. changeCollecBtn.isSelected = false
  108. if seletedData != nil {
  109. changeCollecBtn.setTitle(seletedData?.title ?? "全部", for: .normal)
  110. changeCollecBtn.imagePosition(at: PQButtonImageEdgeInsetsStyle.right, space: cDefaultMargin / 2)
  111. photoMaterialVc.assetCollection = seletedData?.assetCollection
  112. }
  113. }
  114. override func rightBtnClick(sender _: UIButton) {
  115. if let asset = chosedAsset {
  116. let vc = IntroduceController()
  117. vc.asset = asset
  118. navigationController?.pushViewController(vc, animated: true)
  119. } else {
  120. cShowHUB(superView: nil, msg: "需要选择一个视频")
  121. }
  122. }
  123. override open var preferredStatusBarStyle: UIStatusBarStyle {
  124. return .lightContent
  125. }
  126. }