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

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 { class CCSpaceAlbumFliterPopView: UIView {
var selectedFileType:SelectedFileType = .image var selectedFileType:SelectedFileType = .all
var allAssetItemModelArr:[CCSpaceAlbumFliterModel] = [] var allAssetItemModelArr:[CCSpaceAlbumFliterModel] = []
@ -41,9 +41,10 @@ class CCSpaceAlbumFliterPopView: UIView {
lazy var menuView: CCPopMenuView = { lazy var menuView: CCPopMenuView = {
//icon //icon
let popData = [(icon:"",title:"空间照片"), let popData = [(icon:"",title:"全部"),
(icon:"",title:"空间视频"), (icon:"",title:"空间照片"),
/*(icon:"",title:"")*/] (icon:"",title:"空间视频")
]
// //
let parameters:[CCPopMenuConfigure] = [ let parameters:[CCPopMenuConfigure] = [
@ -231,45 +232,77 @@ class CCSpaceAlbumFliterPopView: UIView {
self.listCollectView.reloadData() self.listCollectView.reloadData()
if selectedFileType == .image { if selectedFileType == .image {
let fetchImageResult = PHAsset.fetchAssets(with:.image, options: fetchOptions) 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)
let frameCount = self.getFrameCount(for: asset)
if frameCount > 1 {
//
let imageData = self.getImageData(for: asset)
let photoImage:UIImage = UIImage(data: imageData!)!
//model
let model = CCSpaceAlbumFliterModel.initWithAssetType(assetType: AssetType.image, asset: asset,image:photoImage, localIdentifier: asset.localIdentifier)
//
self.allAssetItemModelArr.append(model)
}
} }
self.listCollectView.reloadData() self.listCollectView.reloadData()
} }
else if selectedFileType == .video { else if selectedFileType == .video {
let fetchVideoResult = PHAsset.fetchAssets(with:.video, options: fetchOptions) let fetchVideoResult = PHAsset.fetchAssets(with:.video, options: fetchOptions)
fetchVideoResult.enumerateObjects(options: .reverse) { asset, index, stop in fetchVideoResult.enumerateObjects(options: .concurrent) { asset, index, stop in
self.dealVideo(asset: asset)
self.getVideoURL(from: asset) { [self] url, avasset in }
let isSpaceVideo = self.isSpatialVideo(asset:avasset) }
if isSpaceVideo { else if selectedFileType == .all {
let firstFrameImage:UIImage = self.getVideoFirstFrame(url: url) let fetchImageResult = PHAsset.fetchAssets(with:.image, options: fetchOptions)
//model let fetchVideoResult = PHAsset.fetchAssets(with:.video, options: fetchOptions)
let model = CCSpaceAlbumFliterModel.initWithAssetType(assetType: AssetType.video, asset: asset,image:firstFrameImage, localIdentifier: asset.localIdentifier) let fetchAllResult:NSMutableArray = NSMutableArray()
// fetchImageResult.enumerateObjects { asset, index, stop in
self.allAssetItemModelArr.append(model) fetchAllResult.add(asset)
DispatchQueue.main.async { [self] in }
listCollectView.reloadData()
} 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 {
//
let imageData = self.getImageData(for: asset)
let photoImage:UIImage = UIImage(data: imageData!)!
//model
let model = CCSpaceAlbumFliterModel.initWithAssetType(assetType: AssetType.image, asset: asset,image:photoImage, localIdentifier: asset.localIdentifier)
//
self.allAssetItemModelArr.append(model)
}
}
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 { [weak self] in
self?.listCollectView.reloadData()
}
}
}
}
//MARK: //MARK:
func isSpatialVideo(asset: AVAsset) -> Bool { func isSpatialVideo(asset: AVAsset) -> Bool {
return ZZHHelper.isSpatialVideo(asset: asset) return ZZHHelper.isSpatialVideo(asset: asset)
@ -299,13 +332,13 @@ class CCSpaceAlbumFliterPopView: UIView {
menuView.didSelectMenuBlock = { [weak self](index:Int)->Void in menuView.didSelectMenuBlock = { [weak self](index:Int)->Void in
print("block select \(index)") print("block select \(index)")
if index == 0 { if index == 1 {
//image //image
self?.selectedFileType = .image self?.selectedFileType = .image
}else if index == 1 { }else if index == 2 {
//video //video
self?.selectedFileType = .video self?.selectedFileType = .video
}else if index == 2 { }else if index == 0 {
//all //all
self?.selectedFileType = .all self?.selectedFileType = .all
} }