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 иллюстрирует использование блока изменения, чтобы создать актив из изображения и добавить что актив к альбому.
- (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!, completionHandlercompletionHandler
: ((Bool, NSError!) -> Void)!)Objective C
- (void)performChanges:(dispatch_block_t)
changeBlock
completionHandler:(void (^)(BOOL success, NSError *error))completionHandler
Параметры
changeBlock
Блок, запрашивающий изменения выполняться.
Этот блок не берет параметров и не имеет никакого возвращаемого значения.
completionHandler
Блок, который фото вызовы после блока изменения завершают и фотографии, выполняет требуемые изменения.
Блок берет следующие параметры:
success
YES
true
если фотографии успешно применили изменения, которые требуют в блоке; иначе,NO
false
.error
Если ошибка происходит,
NSError
объект, описывающий ошибку; иначе,nil
.Обсуждение
Фотографии выполняют и блок изменения и блок обработчика завершения на произвольной последовательной очереди. Обновить UI Вашего приложения в результате изменения, отгрузка, которые работают основной очереди.
Оператор импорта
Objective C
@import Photos;
Swift
import Photos
Доступность
Доступный в iOS 8.0 и позже.
-
Синхронно выполняет блок, запрашивающий изменения выполняться в фото библиотеке.
Объявление
Swift
func performChangesAndWait(_
changeBlock
: dispatch_block_t!, errorerror
: NSErrorPointer) -> BoolObjective C
- (BOOL)performChangesAndWait:(dispatch_block_t)
changeBlock
error:(NSError **)error
Параметры
changeBlock
Блок, запрашивающий изменения выполняться.
Этот блок не берет параметров и не имеет никакого возвращаемого значения.
error
Если ошибка происходит, этот указатель установлен в
NSError
объект, описывающий ошибку. Если Вы не хотите информации об ошибке, передайте вnil
.Возвращаемое значение
YES
true
если фотографии успешно применили изменения, которые требуют в блоке; иначе,NO
false
.Обсуждение
Не вызывайте этот метод от основного потока. Ваш блок изменения и работа, которую фотографии выполняют от Вашего имени для применения изменений, которые это запрашивает, занимают время для выполнения. (Фотографии, возможно, должны предложить пользователю выполнять изменения, таким образом, этот метод может блокировать выполнение неопределенно.) Используют этот метод, если Вы уже выполняете работу над очередью фоновых задач, приводящей к изменению, которое будет применено к фото библиотеке. Для запроса изменений от основной очереди используйте
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 и позже.
-