Как не получить скриншоты из библиотеки фотографий iOS - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь получить фотографии из библиотеки фотографий и хочу показывать только изображения из библиотеки фотографий. Я не хочу показывать видео.

Я использую PHFetchOptions для получения PHAssets из библиотеки фотографий. Также я предоставил предикат для получения только фотографий. Ниже мой код:

let allPhotosOptions = PHFetchOptions()
allPhotosOptions.predicate = NSPredicate(format: "mediaType == 1")
allPhotosOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)]
fetchResult = PHAsset.fetchAssets(with: allPhotosOptions)

Однако я также получаю скриншоты. Я не хочу получать скриншоты. Я обнаружил, что есть свойство для этого. Он называется PHAssetMediaSubtype.photoScreenshot

Я обновил предикат, чтобы не получать скриншоты, но, похоже, он не работает. Многие из моих других изображений также фильтруются, которые не являются скриншотами. ниже мой обновленный код для предиката

 allPhotosOptions.predicate = NSPredicate(format: "mediaType == 1 AND mediaSubtypes != %d", PHAssetMediaSubtype.photoScreenshot.rawValue)

1 Ответ

1 голос
/ 02 марта 2020
@available(iOS 8.0, *)
public enum PHAssetCollectionSubtype : Int {


    // PHAssetCollectionTypeAlbum regular subtypes
    case albumRegular

    case albumSyncedEvent

    case albumSyncedFaces

    case albumSyncedAlbum

    case albumImported


    // PHAssetCollectionTypeAlbum shared subtypes
    case albumMyPhotoStream

    case albumCloudShared


    // PHAssetCollectionTypeSmartAlbum subtypes
    case smartAlbumGeneric

    case smartAlbumPanoramas

    case smartAlbumVideos

    case smartAlbumFavorites

    case smartAlbumTimelapses

    case smartAlbumAllHidden

    case smartAlbumRecentlyAdded

    case smartAlbumBursts

    case smartAlbumSlomoVideos

    case smartAlbumUserLibrary

    @available(iOS 9.0, *)
    case smartAlbumSelfPortraits

    @available(iOS 9.0, *)
    case smartAlbumScreenshots

    @available(iOS 10.2, *)
    case smartAlbumDepthEffect

    @available(iOS 10.3, *)
    case smartAlbumLivePhotos

    @available(iOS 11.0, *)
    case smartAlbumAnimated

    @available(iOS 11.0, *)
    case smartAlbumLongExposures

    // Used for fetching, if you don't care about the exact subtype
    case any
}

//you can fetch whatever you would like to fetch.

//for example Fetch only live Photoes
let sc_Fetch = PHAssetCollection.fetchAssetCollections(with: .smartAlbum, subtype: .smartAlbumLivePhotos, options: nil).firstObject!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...