空间相册添加全部的筛选项

This commit is contained in:
bluesea 2024-03-22 12:57:10 +08:00
parent c9c9fc85de
commit b6b0f76011
2 changed files with 67 additions and 34 deletions

View File

@ -28,7 +28,7 @@ enum SelectedFileType : Int {
class CCSpaceAlbumFliterPopView: UIView {
var selectedFileType:SelectedFileType = .image
var selectedFileType:SelectedFileType = .all
var allAssetItemModelArr:[CCSpaceAlbumFliterModel] = []
@ -41,9 +41,10 @@ class CCSpaceAlbumFliterPopView: UIView {
lazy var menuView: CCPopMenuView = {
//icon
let popData = [(icon:"",title:"空间照片"),
(icon:"",title:"空间视频"),
/*(icon:"",title:"")*/]
let popData = [(icon:"",title:"全部"),
(icon:"",title:"空间照片"),
(icon:"",title:"空间视频")
]
//
let parameters:[CCPopMenuConfigure] = [
@ -231,8 +232,49 @@ class CCSpaceAlbumFliterPopView: UIView {
self.listCollectView.reloadData()
if selectedFileType == .image {
let fetchImageResult = PHAsset.fetchAssets(with:.image, options: fetchOptions)
fetchImageResult.enumerateObjects(options: .reverse) { asset, index, stop in
fetchImageResult.enumerateObjects(options: .concurrent) { asset, index, stop in
self.dealPhoto(asset: asset)
}
self.listCollectView.reloadData()
}
else if selectedFileType == .video {
let fetchVideoResult = PHAsset.fetchAssets(with:.video, options: fetchOptions)
fetchVideoResult.enumerateObjects(options: .concurrent) { asset, index, stop in
self.dealVideo(asset: asset)
}
}
else if selectedFileType == .all {
let fetchImageResult = PHAsset.fetchAssets(with:.image, options: fetchOptions)
let fetchVideoResult = PHAsset.fetchAssets(with:.video, options: fetchOptions)
let fetchAllResult:NSMutableArray = NSMutableArray()
fetchImageResult.enumerateObjects { asset, index, stop in
fetchAllResult.add(asset)
}
fetchVideoResult.enumerateObjects { asset, index, stop in
fetchAllResult.add(asset)
}
fetchAllResult.enumerateObjects(options: .concurrent) { asset, index, stop in
if let phasset = asset as? PHAsset{
if phasset.mediaType == .image {
self.dealPhoto(asset: phasset)
}
else if phasset.mediaType == .video {
self.dealVideo(asset: phasset)
}
}
self.listCollectView.reloadData()
}
print("sss");
}
}
func dealPhoto(asset:PHAsset){
let frameCount = self.getFrameCount(for: asset)
if frameCount > 1 {
//
@ -244,27 +286,18 @@ class CCSpaceAlbumFliterPopView: UIView {
self.allAssetItemModelArr.append(model)
}
}
self.listCollectView.reloadData()
}
else if selectedFileType == .video {
let fetchVideoResult = PHAsset.fetchAssets(with:.video, options: fetchOptions)
fetchVideoResult.enumerateObjects(options: .reverse) { asset, index, stop in
self.getVideoURL(from: asset) { [self] url, avasset in
let isSpaceVideo = self.isSpatialVideo(asset:avasset)
if isSpaceVideo {
let firstFrameImage:UIImage = self.getVideoFirstFrame(url: url)
func dealVideo(asset:PHAsset){
self.getVideoURL(from: asset) { [weak self] url, avasset in
let isSpaceVideo = self?.isSpatialVideo(asset:avasset)
if isSpaceVideo! {
let firstFrameImage:UIImage = (self?.getVideoFirstFrame(url: url))!
//model
let model = CCSpaceAlbumFliterModel.initWithAssetType(assetType: AssetType.video, asset: asset,image:firstFrameImage, localIdentifier: asset.localIdentifier)
//
self.allAssetItemModelArr.append(model)
DispatchQueue.main.async { [self] in
listCollectView.reloadData()
}
}
self?.allAssetItemModelArr.append(model)
DispatchQueue.main.async { [weak self] in
self?.listCollectView.reloadData()
}
}
}
@ -299,13 +332,13 @@ class CCSpaceAlbumFliterPopView: UIView {
menuView.didSelectMenuBlock = { [weak self](index:Int)->Void in
print("block select \(index)")
if index == 0 {
if index == 1 {
//image
self?.selectedFileType = .image
}else if index == 1 {
}else if index == 2 {
//video
self?.selectedFileType = .video
}else if index == 2 {
}else if index == 0 {
//all
self?.selectedFileType = .all
}