首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift iOS:-How将.livePhotos排除在PHFetchOptions中吗?

Swift iOS:-How将.livePhotos排除在PHFetchOptions中吗?
EN

Stack Overflow用户
提问于 2018-09-12 01:42:00
回答 1查看 517关注 0票数 0

在@matt的代码中使用UIImagePicker时,我可以防止用户在选择图像时选择.livePhoto

代码语言:javascript
复制
let asset = info[UIImagePickerControllerPHAsset] as? PHAsset

if asset?.playbackStyle == .livePhoto { 
   // alert user this photo isn't a possibility 
}

在使用PHFetchOptions时,如何防止它们被显示,而不是在enumerateObjects回调中筛选出来?

代码语言:javascript
复制
fileprivate func fetchPhotos() {

    let fetchOptions = PHFetchOptions()
    fetchOptions.fetchLimit = 1000
    let sortDescriptor = NSSortDescriptor(key: "creationDate", ascending: false)
    fetchOptions.sortDescriptors = [sortDescriptor]

    let allPhotos = PHAsset.fetchAssets(with: .video, options: fetchOptions)

    allPhotos.enumerateObjects {
        [weak self] (asset, count, stop) in

        if asset.playbackStyle == .livePhoto {
            return
        }

        let imageManager = PHImageManager.default()
        let targetSize = CGSize(width: 350, height: 350)
        let options = PHImageRequestOptions()
        options.isSynchronous = true

        imageManager.requestImage(for: asset, targetSize: targetSize, contentMode: .aspectFit, options: options, resultHandler: {
            [weak self] (image, info) in

            if let image = image {
                self?.tableData.append(image)
            }

            if count == allPhotos.count - 1 {
                self?.collectionView.reloadData()
            }
        })
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-12 01:55:21

您可以使用predicate属性的PHFetchOptions。如果资产的mediaSubtype属性指示它是活动照片,则设置谓词失败。

代码语言:javascript
复制
fetchOptions.predicate = NSPredicate(format: "(mediaSubtype & %ld) == 0", PHAssetMediaSubtype.PhotoLive.rawValue)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52286312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档