空间相册添加全部的筛选项
This commit is contained in:
parent
c9c9fc85de
commit
b6b0f76011
Binary file not shown.
@ -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
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user