diff --git a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate index 6d7e8b7..aae0741 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/Project/View/Album/CCSpaceAlbumFliterPopView/CCSpaceAlbumFliterPopView.swift b/SwiftProject/SwiftProject/Project/View/Album/CCSpaceAlbumFliterPopView/CCSpaceAlbumFliterPopView.swift index 0512f9d..e3e7f48 100644 --- a/SwiftProject/SwiftProject/Project/View/Album/CCSpaceAlbumFliterPopView/CCSpaceAlbumFliterPopView.swift +++ b/SwiftProject/SwiftProject/Project/View/Album/CCSpaceAlbumFliterPopView/CCSpaceAlbumFliterPopView.swift @@ -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,45 +232,77 @@ 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 - - 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) - } + 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: .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) - //创建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() - } - - + 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 { + //这里是同步的 + 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: 检查是否为空间视频 func isSpatialVideo(asset: AVAsset) -> Bool { return ZZHHelper.isSpatialVideo(asset: asset) @@ -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 }