PHContentEditingController
Наследование
Не применимый
Оператор импорта
Swift
import PhotosUI
Objective C
@import PhotosUI;
Доступность
Доступный в iOS 8.0 и позже.
PHContentEditingController
протокол определяет методы, которые Вы реализуете в пользовательском классе контроллера представления для создания фото расширения. Фото хосты приложений контроллер представления Вашего расширения для обеспечения пользовательского интерфейса для редактирования фотографии или видео активов.
Создание фото расширения
Вы создаете фото расширение путем создания пакета расширения приложения, основной класс которого является пользовательским контроллером представления, принимающим PHContentEditingController
протокол. Самый простой способ сделать это должно создать новую цель в Вашем проекте XCode с фото шаблоном Editing Extension.
Вы используете Info.plist
файл для указания типов актива расширение может отредактировать. В NSExtensionAttributes
словарь, PHSupportedMediaTypes
списки массива поддерживали типы среды. Например, ниже выборки от Info.plist
файл объявляет, что расширение может отредактировать и фотографию и видео активы.
<key>NSExtensionAttributes</key>
<dict>
<key>PHSupportedMediaTypes</key>
<array>
<string>Image</string>
<string>Video</string>
</array>
</dict>
Для получения дополнительной информации о создании расширений приложения, см. Руководство по программированию Расширения Приложения.
Работа с версиями актива и корректировками
Фотографии позволяют пользователю начинать редактировать актив в одном приложении или расширении, тогда более позднее резюме, работающее с тем редактированием в другом приложении или расширением, или даже на различном устройстве. Чтобы поддерживать эту функцию, фотографии сохраняют многократные версии данных изображения каждого актива или видеоданных, а также данных корректировки, описывающих любые редактирования к тем активам. В дополнение к хранению и предыдущее и текущая версия каждого актива, фотографии хранят a PHAdjustmentData
объект. Этот объект содержит «рецепт», описывающий новое редактирование к тому активу — путем интерпретации данных корректировки, можно повторно применить редактирование, преобразовав предыдущую версию актива для создания факсимиле текущей версии.
Когда пользователь выбирает Ваше расширение для фото редактирования, фотографии сначала спрашивает, может ли Ваше расширение интерпретировать данные корректировки от нового редактирования. Если Ваше расширение поддерживает данные корректировки, фотографии обеспечивает предыдущую версию актива, как введено для Вашего сеанса редактирования. После того, как Вы считываете данные корректировки и восстанавливаете редактирование, которое они описывают, Ваше расширение может позволить пользователю изменяться или возвращаться последнее редактирование или вносить дальнейшие изменения. (Например, данные корректировки могут описать фильтры, применился к фотографии. Ваше расширение повторно применяет те фильтры и позволяет пользователю изменять параметры фильтра, добавлять новые фильтры или демонтировать фильтры.)
Если Ваше расширение не поддерживает данные корректировки актива, фотографии обеспечивает текущую версию актива, как введено к Вашему сеансу редактирования. Поскольку текущая версия содержит представленный вывод всех прошлых редактирований, Ваше расширение может далее отредактировать актив, но не может измениться или вернуться новое редактирование.
Для видео активов фотографии не хранят предыдущую версию. Если Ваше расширение не может считать данные корректировки видео актива, необходимо работать с текущей версией видео. В этом случае будущие редактирования не могут использовать данные корректировки Вашего расширения.
Фотография редактируя дополнительный поток операций
Когда пользователь выбирает Ваше расширение для фото редактирования, фотографии вызывает методы этого протокола на Вашем дополнительном контроллере представления в следующем порядке:
Прежде, чем представить Ваш контроллер представления, фотографии вызывают Ваш
canHandleAdjustmentData:
метод.Прежде чем Ваше представление контроллера представления появляется, фотографии вызывает Ваш
startContentEditingWithInput:placeholderImage:
метод.Когда пользователь принимает решение закончить редактирование и принять (или отбрасывание) изменения, фотографии вызывают Ваш
finishContentEditingWithCompletionHandler:
метод.
Если пользователь принимает решение отменить редактирование, фотографии могут вызвать Ваш cancelContentEditing
метод в любое время.
Для получения дополнительной информации на действиях Ваше расширение должно выполнить в каждом методе, видеть описание каждого метода.
-
Спрашивает Ваше расширение, может ли оно продолжать работать с новым редактированием, сделанным к активу. (требуемый)
Объявление
Swift
func canHandleAdjustmentData(_
adjustmentData
: PHAdjustmentData!) -> BoolObjective C
- (BOOL)canHandleAdjustmentData:(PHAdjustmentData *)
adjustmentData
Параметры
adjustmentData
Используйте этот объект определить, может ли Ваше расширение работать с прошлыми редактированиями, сделанными к активу. Как правило, Вы принимаете это решение на основе данных корректировки
formatIdentifier
иformatVersion
свойства.Возвращаемое значение
YES
true
если Ваше расширение поддерживает данные корректировки; иначе,NO
false
.Обсуждение
Когда актив редактируется, фотографии хранит a
PHAdjustmentData
объект, который предоставлен приложением (или расширением), который отредактировал актив. Этот объект предоставляет любую информацию, необходимо для восстановления отредактированного актива с помощью предыдущей версии содержания актива. Когда пользователь пытается отредактировать актив с Вашим расширением, фотографии вызывает этот блок, чтобы учиться, может ли Ваше расширение обработать прошлые корректировки актива.Если Вы возвращаетесь
YES
true
от этого метода фотографии обеспечивают предыдущую версию актива для редактирования. Ваше расширение использует данные корректировки, чтобы измениться, добавить к или повторно применить последнее редактирование. (Например, данные корректировки могут описать фильтры, применился к фотографии. Ваше расширение повторно применяет те фильтры и позволяет пользователю изменять параметры фильтра, добавлять новые фильтры или демонтировать фильтры.)Если Вы возвращаетесь
NO
false
от этого метода фотографии предоставляют новые данные актива — представленный вывод предыдущего редактирования — для редактирования.Для получения дополнительной информации посмотрите Работу с Версиями Актива и Корректировки.
Оператор импорта
Objective C
@import PhotosUI;
Swift
import PhotosUI
Доступность
Доступный в iOS 8.0 и позже.
-
startContentEditingWithInput (_: placeholderImage:) - startContentEditingWithInput:placeholderImage:
ТребуемыйГоворит Вашему расширению, что данные актива доступны для редактирования. (требуемый)
Объявление
Swift
func startContentEditingWithInput(_
contentEditingInput
: PHContentEditingInput!, placeholderImageplaceholderImage
: UIImage!)Objective C
- (void)startContentEditingWithInput:(PHContentEditingInput *)
contentEditingInput
placeholderImage:(UIImage *)placeholderImage
Параметры
contentEditingInput
Объект, описывающий актив, который будет отредактирован.
placeholderImage
Изображение, представляющее текущее состояние актива, подходящего для того, чтобы временно вывести на экран в UI Вашего расширения.
Обсуждение
Фотографии вызывают этот метод, прежде чем появится Ваше дополнительное представление контроллера представления.
Для фото актива используйте
displaySizeImage
свойство предоставленногоPHContentEditingInput
объект выполнить редактирование в UI Вашего расширения. Если возвратилось Ваше расширениеYES
true
отcanHandleAdjustmentData:
метод, это изображение представляет предыдущую версию актива — необходимо использоватьadjustmentData
объект восстановить последнее редактирование, сделанное к активу. Поскольку асинхронно рендеринг результатов предыдущего редактирования может занять время, можно вывести на экранplaceholderImage
пока Ваше расширение не готово начать редактировать.Вы не должны использовать довольное ввод редактирования
fullSizeImageURL
свойство, пока пользователь не закончил редактировать и необходимо представить окончательный результат.Для видео актива используйте
PHContentEditingInput
объект получить объекты Основы AV для редактирования звукового содержимого и видеоконтента.Оператор импорта
Objective C
@import PhotosUI;
Swift
import PhotosUI
Доступность
Доступный в iOS 8.0 и позже.
-
finishContentEditingWithCompletionHandler (_:) - finishContentEditingWithCompletionHandler:
ТребуемыйПросит Ваше расширение отредактированные данные актива заканчивать сеанс редактирования. (требуемый)
Объявление
Swift
func finishContentEditingWithCompletionHandler(_
completionHandler
: ((PHContentEditingOutput!) -> Void)!)Objective C
- (void)finishContentEditingWithCompletionHandler:(void (^)(PHContentEditingOutput *))
completionHandler
Параметры
completionHandler
Блок для Вашего расширения для вызова, когда Вы закончили редактировать.
Блок берет следующий параметр:
output
PHContentEditingOutput
возразите, что Вы создали и заполнили прежде, чем вызвать обработчик завершения.Обсуждение
Когда пользователь принимает решение закончить сеанс редактирования, фотографии вызывают этот метод. Ваш дополнительный контроллер представления должен:
Отключите элементы UI, чтобы препятствовать тому, чтобы пользователь редактировал далее, при завершении остающихся шагов на очереди фоновых задач.
Создайте a
PHContentEditingOutput
объект отPHContentEditingInput
возразите, что фотографии обеспечили для Вашего расширения вstartContentEditingWithInput:placeholderImage:
метод.Используйте довольное вывод редактирования для хранения представленной фотографии или видеоданных от редактирований и a пользователя
PHAdjustmentData
объект, описывающий редактирования.Вызовите
completionHandler
блок с Вашим довольным вывод редактирования, чтобы уведомить фотографии, что редактирование завершено.После
completionHandler
блокируйте заканчивает выполняться, можно безопасно очистить любые данные или файлы, связанные с редактированием.
Оператор импорта
Objective C
@import PhotosUI;
Swift
import PhotosUI
Доступность
Доступный в iOS 8.0 и позже.
-
Булево значение, определяющее, должны ли фотографии предложить пользователю при отмене сеанса редактирования. (требуемый)
Объявление
Swift
var shouldShowCancelConfirmation: Bool { get }
Objective C
@property(readonly, nonatomic) BOOL shouldShowCancelConfirmation
Обсуждение
Реализуйте метод получателя для этого свойства для настройки фото поведения приложения, когда пользователь примет решение отменить довольный редактирование.
Если Вы возвращаетесь
NO
false
(значение по умолчанию), фотографии сразу завершают Ваше расширение, когда пользователь отменяет редактирование. Используйте эту опцию, когда состояние Вашего расширения может быть легко воссоздано — т.е. если пользователь не теряет значительного усилия путем отмены редактирования. Например, эта опция является подходящей для расширений, предлагающих простой выбор между несколькими предварительно сконфигурированными фильтрами изображения.Если Вы возвращаетесь
YES
true
, Фотографии показывают предупреждение для подтверждения выбора пользователя отменить. Используйте эту опцию, когда пользователь инвестировал значительное усилие в Ваш дополнительный поток операций, который был бы потерян при отмене. Эта опция является надлежащей, если пользователь создает новое содержание во время процесса редактирования (например, в расширении, позволяющем пользователю «нарисовать» на изображении).Оператор импорта
Objective C
@import PhotosUI;
Swift
import PhotosUI
Доступность
Доступный в iOS 8.0 и позже.
-
Говорит Вашему расширению отменять редактирование. (требуемый)
Объявление
Swift
func cancelContentEditing()
Objective C
- (void)cancelContentEditing
Обсуждение
Фотографии могут вызвать этот метод в любое время после того, как Ваше дополнительное представление контроллера представления появляется, включая то, в то время как Ваше приложение подготавливает вывод редактирования.
В это время Ваше расширение должно очистить любые ресурсы, связанные с Вашим редактированием, и отменить любую фоновую работу. Если пользователь отменяет редактирование, в то время как Ваше приложение подготавливает вывод, не вызывайте
completionHandler
блокируйте это фотографии, предоставленные вfinishContentEditingWithCompletionHandler:
метод.Оператор импорта
Objective C
@import PhotosUI;
Swift
import PhotosUI
Доступность
Доступный в iOS 8.0 и позже.