UIViewControllerTransitionCoordinator
Наследование
Не применимый
Соответствует
Оператор импорта
Swift
import UIKit
Objective C
@import UIKit;
Доступность
Доступный в iOS 7.0 и позже.
Объект, принимающий UIViewControllerTransitionCoordinator протокол предоставляет поддержку для анимаций, связанных с целью переход контроллера. Как правило, Вы не принимаете этот протокол в своих собственных классах. Когда Вы представляете или отклоняете контроллер представления, UIKit создает координатора перехода объект автоматически и присваивает его контроллеру представления transitionCoordinator свойство. Тот координатор перехода возражает, эфемерно и продолжается в период анимации перехода.
Можно использовать координатора перехода объект выполнить задачи, связанные с переходом, но которые являются отдельными от того, что делают объекты Animator. Во время перехода объекты Animator ответственны за помещение нового содержания контроллера представления на экране, но могут быть другие визуальные элементы, которые должны быть выведены на экран также. Например, контроллер представления мог бы хотеть анимировать появление или исчезновение представлений художественного оформления, которые являются отдельными от содержания контроллера представления. В этом случае это использует координатора перехода для выполнения тех анимаций.
Координатор перехода работает с объектами Animator, чтобы гарантировать, что любые дополнительные анимации выполняются в той же группе анимации как анимации перехода. Наличие анимаций в той же группе означает, что они выполняются одновременно и могут все реагировать на изменения синхронизации, предоставленные интерактивным объектом Animator. Эти корректировки синхронизации происходят автоматически и не требуют никакого дополнительного кода с Вашей стороны.
Используя координатора перехода для обработки анимаций иерархии представления предпочтен по внесению тех тех же изменений в viewWillAppear: или похожие методы Ваших контроллеров представления. Блоки, которые Вы регистрируете в методах этого протокола, как гарантируют, выполнятся в то же время, что и анимации перехода. Что еще более важно координатор перехода предоставляет важную информацию о состоянии перехода, такой как, было ли это отменено к Вашим блокам анимации через UIViewControllerTransitionCoordinatorContext объект.
В дополнение к регистрирующимся анимациям для выполнения во время перехода можно вызвать notifyWhenInteractionEndsUsingBlock: метод для регистрации блока для очистки анимаций связался с интерактивным переходом. Когда пользователь отменяет переход в интерактивном режиме, очистка особенно важна. Когда отмена происходит, необходимо возвратиться к исходному состоянию иерархии представления, поскольку это существовало перед переходом.
Поскольку координатор перехода имеет силу только во время перехода, UIKit выпускает объект, когда сделаны концы перехода и заключительный обратный вызов.
-
Выполняет указанные анимации в то же время, что и анимации перехода контроллера представления. (требуемый)
Объявление
Swift
func animateAlongsideTransition(_animation: ((UIViewControllerTransitionCoordinatorContext!) -> Void)!, completioncompletion: ((UIViewControllerTransitionCoordinatorContext!) -> Void)!) -> BoolObjective C
- (BOOL)animateAlongsideTransition:(void (^)(id<UIViewControllerTransitionCoordinatorContext> context))animationcompletion:(void (^)(id<UIViewControllerTransitionCoordinatorContext> context))completionПараметры
animationБлок, содержащий анимации, Вы хотите выполнить. Эти анимации, выполненные в том же контексте как анимации перехода и поэтому, имеют те же атрибуты по умолчанию. Можно указать
nilдля этого параметра.Блок не имеет никакого возвращаемого значения и берет следующий параметр:
contextКонтекстная информация для выполнения анимаций. Используйте этот объект получить связанную с анимацией информацию, включая контейнерное представление, в котором можно выполнить Ваши анимации. Для получения дополнительной информации посмотрите Ссылку на протокол UIViewControllerTransitionCoordinatorContext.
Анимация, которую Вы указываете, должна иметь место в представлении, убывавшем от контейнерного представления.
completionБлок кода для выполнения после перехода заканчивается. Можно указать
nilдля этого параметра. Блок не имеет никакого возвращаемого значения и берет следующий параметр:contextКонтекстная информация для выполнения анимаций. Используйте этот объект получить связанную с анимацией информацию, включая контейнерное представление, в котором можно выполнить Ваши анимации. Для получения дополнительной информации посмотрите Ссылку на протокол UIViewControllerTransitionCoordinatorContext.
Возвращаемое значение
YEStrueесли анимации были успешно поставлены в очередь для выполнения илиNOfalseесли они не были.Обсуждение
Используйте этот метод для выполнения анимаций, не обрабатывающихся самими объектами Animator. Все анимации, которые Вы указываете, должны произойти в представлении контейнера контекста анимации (или один из его потомков). Используйте
containerViewсвойство объекта контекста для получения контейнерного представления. Для выполнения анимаций в представлении, не убывающем от контейнерного представления используйтеanimateAlongsideTransitionInView:animation:completion:метод вместо этого.Анимации в
animationпараметр обычно выполняется одновременно с анимациями перехода контроллера представления. То поведение применяется когда объект AnimatoranimateTransition:метод реализован с помощьюUIView- основанные анимации. Если использование объекта Animator Базовая Анимация для анимации содержания уровня непосредственно анимации выполняются вскоре послеanimateTransition:возвраты метода.Этот метод возвраты
NOfalseкогда блок вanimationпараметр не может быть поставлен в очередь для выполнения. Блок завершения может все еще работать, даже когда возвращается этот методNOfalse.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 7.0 и позже.
-
animateAlongsideTransitionInView (_: animation:completion:) - animateAlongsideTransitionInView:animation:completion:ТребуемыйВыполняет указанные анимации в представлении, которое является за пределами определяемого контейнерного представления. (требуемый)
Объявление
Swift
func animateAlongsideTransitionInView(_view: UIView!, animationanimation: ((UIViewControllerTransitionCoordinatorContext!) -> Void)!, completioncompletion: ((UIViewControllerTransitionCoordinatorContext!) -> Void)!) -> BoolObjective C
- (BOOL)animateAlongsideTransitionInView:(UIView *)viewanimation:(void (^)(id<UIViewControllerTransitionCoordinatorContext> context))animationcompletion:(void (^)(id<UIViewControllerTransitionCoordinatorContext> context))completionПараметры
viewПредставление (или один из его наследователей), в котором имеют место указанные анимации. Этот параметр не должен быть
nil.animationБлок, содержащий анимации, Вы хотите выполнить. Эти анимации, выполненные в том же контексте как анимации перехода и поэтому, имеют те же атрибуты по умолчанию. Можно указать
nilдля этого параметра.Блок не имеет никакого возвращаемого значения и берет следующий параметр:
contextКонтекстная информация для выполнения анимаций. Используйте этот объект получить связанную с анимацией информацию. Для получения дополнительной информации посмотрите Ссылку на протокол UIViewControllerTransitionCoordinatorContext.
completionБлок кода для выполнения после перехода заканчивается. Можно указать
nilдля этого параметра. Блок не имеет никакого возвращаемого значения и берет следующий параметр:contextКонтекстная информация для выполнения анимаций. Используйте этот объект получить связанную с анимацией информацию. Для получения дополнительной информации посмотрите Ссылку на протокол UIViewControllerTransitionCoordinatorContext.
Возвращаемое значение
YEStrueесли указанная анимация успешно ставится в очередь для выполнения; иначеNOfalse.Обсуждение
Используйте этот метод для выполнения анимаций, не обрабатывающихся самими объектами Animator. Анимации Вы указываете в
animationпараметр должен все иметь место в представлении, убывавшем от представления, которое Вы указываете вviewпараметр.Анимации в
animationпараметр обычно выполняется одновременно с анимациями перехода контроллера представления. То поведение применяется когда объект AnimatoranimateTransition:метод реализован с помощьюUIView- основанные анимации. Если использование объекта Animator Базовая Анимация для анимации содержания уровня непосредственно анимации выполняются вскоре послеanimateTransition:возвраты метода.Этот метод возвраты
NOfalseкогда блок вanimationпараметр не может быть поставлен в очередь для выполнения. Блок завершения может все еще работать, даже когда возвращается этот методNOfalse.Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 7.0 и позже.
См. также
-
Регистрирует блок, который будет выполняться, когда переход изменяется от интерактивного до неинтерактивного. (требуемый)
Объявление
Swift
func notifyWhenInteractionEndsUsingBlock(_handler: (UIViewControllerTransitionCoordinatorContext!) -> Void)Objective C
- (void)notifyWhenInteractionEndsUsingBlock:(void (^)(id<UIViewControllerTransitionCoordinatorContext> context))handlerПараметры
handlerБлок для выполнения, когда переход изменяется от интерактивного до неинтерактивного. Блок не имеет никакого возвращаемого значения и берет следующий параметр:
contextКонтекстная информация для выполнения анимаций. Используйте этот объект получить связанную с анимацией информацию. Для получения дополнительной информации посмотрите Ссылку на протокол UIViewControllerTransitionCoordinatorContext.
Обсуждение
Ваш блок выполняется и когда переход завершается обычно и когда пользователь отменяет переход. В случае, где пользователь отменяет переход, UIKit выполняет Ваш
contextблок, вызовыviewWillDisappear:метод на представленном контроллере представления, и наконец вызываетviewWillAppear:метод на исходном контроллере представления, чтобы сигнализировать, что это еще раз видимо.В Вашем блоке можно получить значение
isCancelledметод координатора перехода контекст и использование, оценивающие для определения надлежащего плана действий. Например, если бы переход был отменен, то Вы могли бы использовать этот блок для удаления любых дополнительных представлений, добавленных к иерархии представления предыдущим вызовом кanimateAlongsideTransition:completion:илиanimateAlongsideTransitionInView:animation:completion:.Можно вызвать этот метод многократно для регистрации многократных блоков. Когда переходное состояние изменяется, все зарегистрированные блоки выполняются.
Оператор импорта
Objective C
@import UIKit;Swift
import UIKitДоступность
Доступный в iOS 7.0 и позже.
