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свойства.Возвращаемое значение
YEStrueесли Ваше расширение поддерживает данные корректировки; иначе,NOfalse.Обсуждение
Когда актив редактируется, фотографии хранит a
PHAdjustmentDataобъект, который предоставлен приложением (или расширением), который отредактировал актив. Этот объект предоставляет любую информацию, необходимо для восстановления отредактированного актива с помощью предыдущей версии содержания актива. Когда пользователь пытается отредактировать актив с Вашим расширением, фотографии вызывает этот блок, чтобы учиться, может ли Ваше расширение обработать прошлые корректировки актива.Если Вы возвращаетесь
YEStrueот этого метода фотографии обеспечивают предыдущую версию актива для редактирования. Ваше расширение использует данные корректировки, чтобы измениться, добавить к или повторно применить последнее редактирование. (Например, данные корректировки могут описать фильтры, применился к фотографии. Ваше расширение повторно применяет те фильтры и позволяет пользователю изменять параметры фильтра, добавлять новые фильтры или демонтировать фильтры.)Если Вы возвращаетесь
NOfalseот этого метода фотографии предоставляют новые данные актива — представленный вывод предыдущего редактирования — для редактирования.Для получения дополнительной информации посмотрите Работу с Версиями Актива и Корректировки.
Оператор импорта
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 *)contentEditingInputplaceholderImage:(UIImage *)placeholderImageПараметры
contentEditingInputОбъект, описывающий актив, который будет отредактирован.
placeholderImageИзображение, представляющее текущее состояние актива, подходящего для того, чтобы временно вывести на экран в UI Вашего расширения.
Обсуждение
Фотографии вызывают этот метод, прежде чем появится Ваше дополнительное представление контроллера представления.
Для фото актива используйте
displaySizeImageсвойство предоставленногоPHContentEditingInputобъект выполнить редактирование в UI Вашего расширения. Если возвратилось Ваше расширениеYEStrueот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Блок для Вашего расширения для вызова, когда Вы закончили редактировать.
Блок берет следующий параметр:
outputPHContentEditingOutputвозразите, что Вы создали и заполнили прежде, чем вызвать обработчик завершения.Обсуждение
Когда пользователь принимает решение закончить сеанс редактирования, фотографии вызывают этот метод. Ваш дополнительный контроллер представления должен:
Отключите элементы 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Обсуждение
Реализуйте метод получателя для этого свойства для настройки фото поведения приложения, когда пользователь примет решение отменить довольный редактирование.
Если Вы возвращаетесь
NOfalse(значение по умолчанию), фотографии сразу завершают Ваше расширение, когда пользователь отменяет редактирование. Используйте эту опцию, когда состояние Вашего расширения может быть легко воссоздано — т.е. если пользователь не теряет значительного усилия путем отмены редактирования. Например, эта опция является подходящей для расширений, предлагающих простой выбор между несколькими предварительно сконфигурированными фильтрами изображения.Если Вы возвращаетесь
YEStrue, Фотографии показывают предупреждение для подтверждения выбора пользователя отменить. Используйте эту опцию, когда пользователь инвестировал значительное усилие в Ваш дополнительный поток операций, который был бы потерян при отмене. Эта опция является надлежащей, если пользователь создает новое содержание во время процесса редактирования (например, в расширении, позволяющем пользователю «нарисовать» на изображении).Оператор импорта
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 и позже.
