Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека Разработчика iOS

Разработчик

Фото ссылка платформы ссылка класса PHPhotoLibrary

Опции
Развертывание Target:

На этой странице
Язык:

PHPhotoLibrary

Наследование


Соответствует


Оператор импорта


Swift

import Photos

Objective C

@import Photos;

Доступность


Доступный в iOS 8.0 и позже.

Совместно используемое PHPhotoLibrary объект представляет фото библиотеку пользователя — весь набор активов и наборов, которыми управляет фото приложение, включая объекты, хранившие на локальном устройстве и (если включено) в фотографиях iCloud. Вы используете этот фото объект библиотеки для выполнения изменений в фото объектах — например, редактируя метаданные актива или содержание, вставляя новые активы, или перестраивая элементы набора. (Фото объекты являются объектами, моделирующими элементы, с которыми работает пользователь в фото приложении: экземпляры PHAsset, PHAssetCollection, и PHCollectionList классы.) Вы также используете фото объект библиотеки для регистрации для сообщений, что фотографии отправляют каждый раз, когда изменения происходят с содержанием или метаданными активов и наборов.

Запрос изменений в фото библиотеке

Фото экземпляры объекта являются неизменными объектами. Поэтому для изменения фото активов или наборов эти объекты представляют, Вы пользуетесь совместно используемой фото библиотекой для выполнения блока изменения. В блоке изменения Вы создаете объекты запроса на изменение. Вы применяете блок изменения с одним из методов, перечисленных в Применении Изменений в фото Библиотеке. Изменения, которые Вы запрашиваете в блоке, вступают в силу после фото выполнений блок, и вызывает Ваш обработчик завершения.

Каждый из классов запроса на изменение —PHAssetChangeRequest, PHAssetCollectionChangeRequest, и PHCollectionListChangeRequest— соответствует фото классу объекта. Используйте эти классы для выполнения следующих операций редактирования на активах или наборах, которые они представляют:

  • Создание объектов. Каждый класс запроса на изменение обеспечивает методы для запроса создать новый элемент соответствующего класса объекта. Например, используйте creationRequestForAssetCollectionWithTitle: метод для создания набора актива.

    Чтобы сослаться на недавно создаваемый запрос в блоке изменения — например, добавить новый актив к набору — используют PHObjectPlaceholder объект, предоставленный запросом на изменение. После того, как блок изменения завершается, используйте объект местозаполнителя localIdentifier свойство для выборки созданного объекта.

  • Удаление объектов. Каждый класс запроса на изменение обеспечивает методы для запроса удалить один или несколько элементов соответствующего класса объекта. Например, используйте deleteCollectionLists: метод для удаления списков набора.

  • Изменение объектов. Вы изменяете существующий актив или набор путем создания запроса на изменение из фото объекта объекта представление его. Например, changeRequestForAsset: метод создает запрос на изменение, который можно использовать для изменения актива.

    После создания запроса на изменение используйте его свойства и методы экземпляра изменить соответствующие функции актива или набора, который это представляет. Например, для установки актива favorite свойство, набор favorite свойство запроса на изменение создается из того актива. Для добавления к набору актива вызовите addAssets: метод на запросе на изменение набора актива.

Используйте блок изменения для объединения нескольких изменений в фото библиотеке в единственное атомарное обновление. Перечисление 1 иллюстрирует использование блока изменения, чтобы создать актив из изображения и добавить что актив к альбому.

Перечисление 1Creating актив и добавление его к альбому
  • - (void)addNewAssetWithImage:(UIImage *)image toAlbum:(PHAssetCollection *)album
  • {
  • [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
  • // Request creating an asset from the image.
  • PHAssetChangeRequest *createAssetRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];
  • // Request editing the album.
  • PHAssetCollectionChangeRequest *albumChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:album];
  • // Get a placeholder for the new asset and add it to the album editing request.
  • PHObjectPlaceholder *assetPlaceholder = [createAssetRequest placeholderForCreatedAsset];
  • [albumChangeRequest addAssets:@[ assetPlaceholder ]];
  • } completionHandler:^(BOOL success, NSError *error) {
  • NSLog(@"Finished adding asset. %@", (success ? @"Success" : error));
  • }];
  • }

Наблюдение изменений

Чтобы быть уведомленными относительно изменений в фото библиотеке, используйте registerChangeObserver: метод для обозначения объекта наблюдателя. Каждый раз, когда Вы используете метод выборки (такой как fetchAssetsWithOptions:) для получения фото объектов фотографии автоматически регистрируют интерес к наблюдению изменений в тех объектах. После выполнения выборки фотографии отправляет сообщения наблюдателю каждый раз, когда объекты в получающейся выборке запрашивают изменение — включая то, когда изменения происходят, которые добавляют к, удаляют из или переупорядочивают список объектов в результате выборки.

Для получения дополнительной информации при обработке изменений, посмотрите Ссылку на протокол PHPhotoLibraryChangeObserver.

  • Информация о возвратах об авторизации Вашего приложения для доступа к фото библиотеке пользователя.

    Объявление

    Swift

    class func authorizationStatus() -> PHAuthorizationStatus

    Objective C

    + (PHAuthorizationStatus)authorizationStatus

    Возвращаемое значение

    Текущее состояние авторизации. Посмотрите PHAuthorizationStatus.

    Обсуждение

    Доступ к фото библиотеке всегда требует явного разрешения от пользователя. В первый раз Ваше использование приложения PHAsset, PHCollection, PHAssetCollection, или PHCollectionList методы для выборки содержания от библиотеки или использования один из методов, перечисленных в Применении Изменений в фото Библиотеке для запроса изменений в содержании библиотеки, фотографии автоматически и асинхронно, предлагают пользователю запрашивать авторизацию.

    После того, как пользователь дает разрешение, система помнит выбор за будущее использование в Вашем приложении, но пользователь может изменить этот выбор в любое время с помощью приложения Настроек. Если пользователь отклонил Ваш фото библиотечный доступ приложения, еще не реагировал на подсказку разрешения или не может предоставить доступ вследствие ограничений, любые попытки выбрать фото содержание библиотеки возвратятся пустой PHFetchResult объекты и любые попытки выполнить изменения в фото библиотеке перестанут работать.

    Если возвращается этот метод PHAuthorizationStatusNotDetermined, можно вызвать requestAuthorization: метод для запроса пользователя фото разрешение библиотечного доступа.

    Оператор импорта

    Objective C

    @import Photos;

    Swift

    import Photos

    Доступность

    Доступный в iOS 8.0 и позже.

  • Запрашивает разрешение пользователя, в случае необходимости, для доступа к фото библиотеке.

    Объявление

    Swift

    class func requestAuthorization(_ handler: ((PHAuthorizationStatus) -> Void)!)

    Objective C

    + (void)requestAuthorization:(void (^)(PHAuthorizationStatus status))handler

    Параметры

    handler

    Блок фотографии призывает определение авторизации Вашего приложения получить доступ к фото библиотеке.

    Блок берет единственный параметр:

    status

    Текущее состояние авторизации. Посмотрите PHAuthorizationStatus.

    Обсуждение

    Доступ к фото библиотеке всегда требует явного разрешения от пользователя. В первый раз Ваше использование приложения PHAsset, PHCollection, PHAssetCollection, или PHCollectionList методы для выборки содержания от библиотеки или использования один из методов, перечисленных в Применении Изменений в фото Библиотеке для запроса изменений в содержании библиотеки, фотографии автоматически и асинхронно, предлагают пользователю запрашивать авторизацию. Также можно вызвать этот метод для запроса пользователя во время выбора.

    После того, как пользователь дает разрешение, система помнит выбор за будущее использование в Вашем приложении, но пользователь может изменить этот выбор в любое время с помощью приложения Настроек. Если пользователь отклонил Ваш фото библиотечный доступ приложения, еще не реагировал на подсказку разрешения или не может предоставить доступ вследствие ограничений, любые попытки выбрать фото содержание библиотеки возвратятся пустой PHFetchResult объекты и любые попытки выполнить изменения в фото библиотеке перестанут работать.

    Этот метод всегда сразу возвращается. Если пользователь ранее предоставил или отклонил фото разрешение библиотечного доступа, оно выполняется handler блокируйте, когда вызвано; иначе, это выводит на экран предупреждение и выполняет блок только после того, как пользователь реагировал на предупреждение.

    Оператор импорта

    Objective C

    @import Photos;

    Swift

    import Photos

    Доступность

    Доступный в iOS 8.0 и позже.

  • Получает совместно используемый фото объект библиотеки.

    Объявление

    Swift

    class func sharedPhotoLibrary() -> PHPhotoLibrary!

    Objective C

    + (PHPhotoLibrary *)sharedPhotoLibrary

    Возвращаемое значение

    Одноэлементный фото объект библиотеки.

    Обсуждение

    Можно использовать совместно используемый фото объект библиотеки от любого потока.

    Оператор импорта

    Objective C

    @import Photos;

    Swift

    import Photos

    Доступность

    Доступный в iOS 8.0 и позже.

  • Асинхронно выполняет блок, запрашивающий изменения выполняться в фото библиотеке.

    Объявление

    Swift

    func performChanges(_ changeBlock: dispatch_block_t!, completionHandler completionHandler: ((Bool, NSError!) -> Void)!)

    Objective C

    - (void)performChanges:(dispatch_block_t)changeBlock completionHandler:(void (^)(BOOL success, NSError *error))completionHandler

    Параметры

    changeBlock

    Блок, запрашивающий изменения выполняться.

    Этот блок не берет параметров и не имеет никакого возвращаемого значения.

    completionHandler

    Блок, который фото вызовы после блока изменения завершают и фотографии, выполняет требуемые изменения.

    Блок берет следующие параметры:

    success

    YEStrue если фотографии успешно применили изменения, которые требуют в блоке; иначе, NOfalse.

    error

    Если ошибка происходит, NSError объект, описывающий ошибку; иначе, nil.

    Обсуждение

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

    Оператор импорта

    Objective C

    @import Photos;

    Swift

    import Photos

    Доступность

    Доступный в iOS 8.0 и позже.

  • Синхронно выполняет блок, запрашивающий изменения выполняться в фото библиотеке.

    Объявление

    Swift

    func performChangesAndWait(_ changeBlock: dispatch_block_t!, error error: NSErrorPointer) -> Bool

    Objective C

    - (BOOL)performChangesAndWait:(dispatch_block_t)changeBlock error:(NSError **)error

    Параметры

    changeBlock

    Блок, запрашивающий изменения выполняться.

    Этот блок не берет параметров и не имеет никакого возвращаемого значения.

    error

    Если ошибка происходит, этот указатель установлен в NSError объект, описывающий ошибку. Если Вы не хотите информации об ошибке, передайте в nil.

    Возвращаемое значение

    YEStrue если фотографии успешно применили изменения, которые требуют в блоке; иначе, NOfalse.

    Обсуждение

    Не вызывайте этот метод от основного потока. Ваш блок изменения и работа, которую фотографии выполняют от Вашего имени для применения изменений, которые это запрашивает, занимают время для выполнения. (Фотографии, возможно, должны предложить пользователю выполнять изменения, таким образом, этот метод может блокировать выполнение неопределенно.) Используют этот метод, если Вы уже выполняете работу над очередью фоновых задач, приводящей к изменению, которое будет применено к фото библиотеке. Для запроса изменений от основной очереди используйте performChanges:completionHandler: метод вместо этого.

    Оператор импорта

    Objective C

    @import Photos;

    Swift

    import Photos

    Доступность

    Доступный в iOS 8.0 и позже.

  • Когда объекты в фото библиотеке изменяются, регистрирует объект получить сообщения.

    Объявление

    Swift

    func registerChangeObserver(_ observer: PHPhotoLibraryChangeObserver!)

    Objective C

    - (void)registerChangeObserver:(id<PHPhotoLibraryChangeObserver>)observer

    Параметры

    observer

    Объект для получения сообщений изменения.

    Обсуждение

    Вы неявно объявляете интерес к сообщениям изменения каждый раз, когда Вы используете метод выборки (такой как fetchAssetsWithOptions:) получать фото объекты (активы, наборы актива или списки набора). После выполнения выборки фотографии автоматически отправляет сообщения изменения каждый раз, когда объекты в получающейся выборке запрашивают изменение — включая то, когда изменения происходят, которые добавляют к, удаляют из или переупорядочивают список объектов в результате выборки.

    Оператор импорта

    Objective C

    @import Photos;

    Swift

    import Photos

    Доступность

    Доступный в iOS 8.0 и позже.

  • Не регистрирует объект так, чтобы он больше не получал сообщения изменения.

    Объявление

    Swift

    func unregisterChangeObserver(_ observer: PHPhotoLibraryChangeObserver!)

    Objective C

    - (void)unregisterChangeObserver:(id<PHPhotoLibraryChangeObserver>)observer

    Параметры

    observer

    Объект в настоящее время регистрировался для получения сообщений изменения.

    Оператор импорта

    Objective C

    @import Photos;

    Swift

    import Photos

    Доступность

    Доступный в iOS 8.0 и позже.

  • Информация об авторизации Вашего приложения получить доступ к фото библиотеке пользователя, пользовавшейся authorizationStatus и requestAuthorization: методы.

    Объявление

    Swift

    enum PHAuthorizationStatus : Int { case NotDetermined case Restricted case Denied case Authorized }

    Objective C

    typedef enum : NSInteger { PHAuthorizationStatusNotDetermined = 0, PHAuthorizationStatusRestricted, PHAuthorizationStatusDenied, PHAuthorizationStatusAuthorized } PHAuthorizationStatus;

    Константы

    • NotDetermined

      PHAuthorizationStatusNotDetermined

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

      Когда Вы попытаетесь выбрать активы, наборы актива или списки набора, фотографии автоматически запросят авторизацию пользователя. Также можно вызвать requestAuthorization: метод для запроса пользователя авторизацию во время выбора.

      Доступный в iOS 8.0 и позже.

    • Restricted

      PHAuthorizationStatusRestricted

      Ваше приложение не разрешено получить доступ к фото библиотеке, и пользователь не может дать такое разрешение.

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

      Доступный в iOS 8.0 и позже.

    • Denied

      PHAuthorizationStatusDenied

      Пользователь явно отклонил Ваш доступ к приложениям к фото библиотеке.

      Доступный в iOS 8.0 и позже.

    • Authorized

      PHAuthorizationStatusAuthorized

      Пользователь явно предоставил Ваш доступ к приложениям фото библиотеке.

      Доступный в iOS 8.0 и позже.

    Оператор импорта

    Objective C

    @import Photos;

    Swift

    import Photos

    Доступность

    Доступный в iOS 8.0 и позже.