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

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

Разработчик

Ссылка платформы PhotosUI ссылка на протокол PHContentEditingController

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

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

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 объект. Этот объект содержит «рецепт», описывающий новое редактирование к тому активу — путем интерпретации данных корректировки, можно повторно применить редактирование, преобразовав предыдущую версию актива для создания факсимиле текущей версии.

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

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

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

Фотография редактируя дополнительный поток операций

Когда пользователь выбирает Ваше расширение для фото редактирования, фотографии вызывает методы этого протокола на Вашем дополнительном контроллере представления в следующем порядке:

  1. Прежде, чем представить Ваш контроллер представления, фотографии вызывают Ваш canHandleAdjustmentData: метод.

  2. Прежде чем Ваше представление контроллера представления появляется, фотографии вызывает Ваш startContentEditingWithInput:placeholderImage: метод.

  3. Когда пользователь принимает решение закончить редактирование и принять (или отбрасывание) изменения, фотографии вызывают Ваш finishContentEditingWithCompletionHandler: метод.

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

Для получения дополнительной информации на действиях Ваше расширение должно выполнить в каждом методе, видеть описание каждого метода.

  • Спрашивает Ваше расширение, может ли оно продолжать работать с новым редактированием, сделанным к активу. (требуемый)

    Объявление

    Swift

    func canHandleAdjustmentData(_ adjustmentData: PHAdjustmentData!) -> Bool

    Objective C

    - (BOOL)canHandleAdjustmentData:(PHAdjustmentData *)adjustmentData

    Параметры

    adjustmentData

    Используйте этот объект определить, может ли Ваше расширение работать с прошлыми редактированиями, сделанными к активу. Как правило, Вы принимаете это решение на основе данных корректировки formatIdentifier и formatVersion свойства.

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

    YEStrue если Ваше расширение поддерживает данные корректировки; иначе, NOfalse.

    Обсуждение

    Когда актив редактируется, фотографии хранит a PHAdjustmentData объект, который предоставлен приложением (или расширением), который отредактировал актив. Этот объект предоставляет любую информацию, необходимо для восстановления отредактированного актива с помощью предыдущей версии содержания актива. Когда пользователь пытается отредактировать актив с Вашим расширением, фотографии вызывает этот блок, чтобы учиться, может ли Ваше расширение обработать прошлые корректировки актива.

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

    Если Вы возвращаетесь NOfalse от этого метода фотографии предоставляют новые данные актива — представленный вывод предыдущего редактирования — для редактирования.

    Для получения дополнительной информации посмотрите Работу с Версиями Актива и Корректировки.

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

    Objective C

    @import PhotosUI;

    Swift

    import PhotosUI

    Доступность

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

  • Говорит Вашему расширению, что данные актива доступны для редактирования. (требуемый)

    Объявление

    Swift

    func startContentEditingWithInput(_ contentEditingInput: PHContentEditingInput!, placeholderImage placeholderImage: UIImage!)

    Objective C

    - (void)startContentEditingWithInput:(PHContentEditingInput *)contentEditingInput placeholderImage:(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 и позже.

  • Просит Ваше расширение отредактированные данные актива заканчивать сеанс редактирования. (требуемый)

    Объявление

    Swift

    func finishContentEditingWithCompletionHandler(_ completionHandler: ((PHContentEditingOutput!) -> Void)!)

    Objective C

    - (void)finishContentEditingWithCompletionHandler:(void (^)(PHContentEditingOutput *))completionHandler

    Параметры

    completionHandler

    Блок для Вашего расширения для вызова, когда Вы закончили редактировать.

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

    output

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

    Обсуждение

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

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

    2. Создайте a PHContentEditingOutput объект от PHContentEditingInput возразите, что фотографии обеспечили для Вашего расширения в startContentEditingWithInput:placeholderImage: метод.

      Используйте довольное вывод редактирования для хранения представленной фотографии или видеоданных от редактирований и a пользователя PHAdjustmentData объект, описывающий редактирования.

    3. Вызовите completionHandler блок с Вашим довольным вывод редактирования, чтобы уведомить фотографии, что редактирование завершено.

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

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

    Objective C

    @import PhotosUI;

    Swift

    import PhotosUI

    Доступность

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

  • shouldShowCancelConfirmation Требуемое свойство

    Булево значение, определяющее, должны ли фотографии предложить пользователю при отмене сеанса редактирования. (требуемый)

    Объявление

    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 и позже.