PHContentEditingOutput
Оператор импорта
Swift
import Photos
Objective C
@import Photos;
Доступность
Доступный в iOS 8.0 и позже.
A PHContentEditingOutput
объект представляет результаты редактирования фотографии или видеоконтента фото актива.
Отредактировать фотографию актива или видеоконтент:
Выборка a
PHAsset
объект, представляющий фотографию или видео, которое будет отредактировано.Вызовите актив
requestContentEditingInputWithOptions:completionHandler:
метод для получения aPHContentEditingInput
объект. Этот объект предоставляет информацию об активе, данные актива, которые будут отредактированы, и изображение предварительного просмотра для дисплея.Примените свои редактирования к активу. Позволить пользователю продолжать работать с редактированием позже (например, для корректировки параметров фото фильтра), создают a
PHAdjustmentData
объект, описывающий изменения.Инициализируйте a
PHContentEditingOutput
объект сPHContentEditingInput
возразите, что Вы получили. Предоставьте отредактированному содержаниюrenderedContentURL
свойство, и предоставляет данные корректировки сadjustmentData
свойство.Используйте фото блок изменения библиотеки для фиксации редактирования. (Для получения дополнительной информации посмотрите Ссылку класса PHPhotoLibrary.) В блоке, создайте a
PHAssetChangeRequest
объект и наборcontentEditingOutput
свойство к редактированию вывело Вас создаваемый.Каждый
PHPhotoLibrary
performChanges
вызовите propmpts пользователь для разрешения отредактировать содержание фото библиотеки — чтобы отредактировать многократные активы в одном пакете, создать многократныйPHAssetChangeRequest
объекты в том же блоке изменения, каждом с его собственным соответствиемPHContentEditingOutput
объект.
Можно также отредактировать активы из фотографии, редактируя расширения. В этом случае, вместо того, чтобы работать с a PHAsset
объект, Вы реализуете методы в PHContentEditingController
протокол. Фотографии обеспечивают a PHContentEditingInput
возразите, когда Ваше расширение начнет редактировать. Когда редактирование завершено, фотографии запрашивает a PHContentEditingOutput
объект, содержащий отредактированное содержание актива.
-
Создает вывод редактирования из указанного ввода редактирования.
Объявление
Swift
init!(contentEditingInput
contentEditingInput
: PHContentEditingInput!)Objective C
- (instancetype)initWithContentEditingInput:(PHContentEditingInput *)
contentEditingInput
Параметры
contentEditingInput
Информация предоставляющего объекта об активе, который будет отредактирован.
Возвращаемое значение
Выводится инициализированное довольное редактирование.
Обсуждение
Для завершения редактирования используйте
renderedContentURL
свойство для обеспечения отредактированного содержания актива. Затем используйтеPHAssetChangeRequest
класс илиPHContentEditingController
протокол для передачи редактирования хранению.Оператор импорта
Objective C
@import Photos;
Swift
import Photos
Доступность
Доступный в iOS 8.0 и позже.
-
Создает вывод редактирования для использования в добавлении нового актива к фото библиотеке.
Объявление
Swift
init!(placeholderForCreatedAsset
placeholderForCreatedAsset
: PHObjectPlaceholder!)Objective C
- (instancetype)initWithPlaceholderForCreatedAsset:(PHObjectPlaceholder *)
placeholderForCreatedAsset
Параметры
placeholderForCreatedAsset
Объект местозаполнителя, связывающий вывод редактирования с a
PHAssetChangeRequest
объект для создания нового актива.Возвращаемое значение
Выводится инициализированное довольное редактирование.
Обсуждение
Используйте этот метод, если Вы хотите добавить новый актив к фото библиотеке с отредактированным содержанием, в противоположность редактированию содержания актива после добавления его к библиотеке. Например, Вы могли бы использовать эту опцию, если Ваше приложение применяет фильтры к фотографиям, это получает с камерой устройства — вместо того, чтобы сохранить только отфильтрованный образ к фото библиотеке, Ваше приложение может сохранить и отфильтрованный и исходное изображение, позволив пользователю вернуться к исходному изображению или применить различные фильтры позже. Код ниже иллюстрирует такой поток операций:
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
// Make a change request for adding an asset.
PHAssetChangeRequest *changeRequest =
[PHAssetChangeRequest creationRequestForAssetFromImageAtFileURL:originalJPEGFileURL];
// Make a content editing output for use with the change request.
PHObjectPlaceholder *placeholder = changeRequest.placeholderForCreatedAsset;
PHContentEditingOutput *contentEditingOutput =
[[PHContentEditingOutput alloc] initWithPlaceholderForCreatedAsset:placeholder];
// Apply content adjustments to the newly created asset.
contentEditingOutput.adjustmentData = adjustmentData;
[adjustedJPEGData writeToURL:contentEditingOutput.renderedContentURL atomically:YES];
changeRequest.contentEditingOutput = contentEditingOutput;
} completionHandler:^(BOOL success, NSError *error) {
if (!success) NSLog(@"Can't create asset: %@", error);
}];
В этом примере приложение сначала использует a
PHAssetChangeRequest
возразите для запроса создания нового актива с неотредактированным изображением, полученным от камеры (originalJPEGFileURL
). Затем это создает aPHContentEditingOutput
объект сplaceholderForCreatedAsset
объект, предоставленный запросом на изменение. Наконец, это обеспечивает отфильтрованные данные изображения (adjustedJPEGData
) и данные корректировки, описывающие фильтры (adjustmentData
) к выводу редактирования и добавляет вывод редактирования к запросу на изменение.Оператор импорта
Objective C
@import Photos;
Swift
import Photos
Доступность
Доступный в iOS 8.0 и позже.
-
adjustmentData
СвойствоОбъект, описывающий изменения, внесенные в актив.
Объявление
Swift
var adjustmentData: PHAdjustmentData!
Objective C
@property(readwrite, strong) PHAdjustmentData *adjustmentData
Обсуждение
Вы используете данные корректировки для описания «рецепта» для редактирования, которое могут использовать более поздние редактирования. Например, фотография, редактируя приложение может использовать это свойство для сохранения информации о фильтрах, применился к фотографии. Позже, то же приложение (или другое приложение, понимающее его формат данных корректировки) могут загрузить информацию о фильтре, изменить параметры фильтра и повторно применить фильтры к исходной фотографии.
Если Вы пишете новое содержание актива в URL, указанный
renderedContentURL
свойство, необходимо также обеспечить новое, отличноеPHAdjustmentData
объект, описывающий Ваше редактирование. Передача существующего ранее объекта данных корректировки (который описывает более раннее редактирование), результаты в неопределенном поведении.Оператор импорта
Objective C
@import Photos;
Swift
import Photos
Доступность
Доступный в iOS 8.0 и позже.
-
renderedContentURL
СвойствоURL, в котором можно записать файл, содержащий, отредактировал содержание актива. (только для чтения)
Объявление
Swift
@NSCopying var renderedContentURL: NSURL! { get }
Objective C
@property(readonly, copy) NSURL *renderedContentURL
Обсуждение
Считайте это свойство для нахождения URL для записи отредактированного содержания актива. Затем при редактировании фото актива запишите измененное фото изображение в файл в формате JPEG в этом URL. При редактировании видео актива экспортируйте видео в QuickTime (
.mov
) файл в этом URL.Оператор импорта
Objective C
@import Photos;
Swift
import Photos
Доступность
Доступный в iOS 8.0 и позже.