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))
animation
completion:(void (^)(id<UIViewControllerTransitionCoordinatorContext> context))completion
Параметры
animation
Блок, содержащий анимации, Вы хотите выполнить. Эти анимации, выполненные в том же контексте как анимации перехода и поэтому, имеют те же атрибуты по умолчанию. Можно указать
nil
для этого параметра.Блок не имеет никакого возвращаемого значения и берет следующий параметр:
context
Контекстная информация для выполнения анимаций. Используйте этот объект получить связанную с анимацией информацию, включая контейнерное представление, в котором можно выполнить Ваши анимации. Для получения дополнительной информации посмотрите Ссылку на протокол UIViewControllerTransitionCoordinatorContext.
Анимация, которую Вы указываете, должна иметь место в представлении, убывавшем от контейнерного представления.
completion
Блок кода для выполнения после перехода заканчивается. Можно указать
nil
для этого параметра. Блок не имеет никакого возвращаемого значения и берет следующий параметр:context
Контекстная информация для выполнения анимаций. Используйте этот объект получить связанную с анимацией информацию, включая контейнерное представление, в котором можно выполнить Ваши анимации. Для получения дополнительной информации посмотрите Ссылку на протокол UIViewControllerTransitionCoordinatorContext.
Возвращаемое значение
YES
true
если анимации были успешно поставлены в очередь для выполнения илиNO
false
если они не были.Обсуждение
Используйте этот метод для выполнения анимаций, не обрабатывающихся самими объектами Animator. Все анимации, которые Вы указываете, должны произойти в представлении контейнера контекста анимации (или один из его потомков). Используйте
containerView
свойство объекта контекста для получения контейнерного представления. Для выполнения анимаций в представлении, не убывающем от контейнерного представления используйтеanimateAlongsideTransitionInView:animation:completion:
метод вместо этого.Анимации в
animation
параметр обычно выполняется одновременно с анимациями перехода контроллера представления. То поведение применяется когда объект AnimatoranimateTransition:
метод реализован с помощьюUIView
- основанные анимации. Если использование объекта Animator Базовая Анимация для анимации содержания уровня непосредственно анимации выполняются вскоре послеanimateTransition:
возвраты метода.Этот метод возвраты
NO
false
когда блок вanimation
параметр не может быть поставлен в очередь для выполнения. Блок завершения может все еще работать, даже когда возвращается этот методNO
false
.Оператор импорта
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 *)
view
animation:(void (^)(id<UIViewControllerTransitionCoordinatorContext> context))animation
completion:(void (^)(id<UIViewControllerTransitionCoordinatorContext> context))completion
Параметры
view
Представление (или один из его наследователей), в котором имеют место указанные анимации. Этот параметр не должен быть
nil
.animation
Блок, содержащий анимации, Вы хотите выполнить. Эти анимации, выполненные в том же контексте как анимации перехода и поэтому, имеют те же атрибуты по умолчанию. Можно указать
nil
для этого параметра.Блок не имеет никакого возвращаемого значения и берет следующий параметр:
context
Контекстная информация для выполнения анимаций. Используйте этот объект получить связанную с анимацией информацию. Для получения дополнительной информации посмотрите Ссылку на протокол UIViewControllerTransitionCoordinatorContext.
completion
Блок кода для выполнения после перехода заканчивается. Можно указать
nil
для этого параметра. Блок не имеет никакого возвращаемого значения и берет следующий параметр:context
Контекстная информация для выполнения анимаций. Используйте этот объект получить связанную с анимацией информацию. Для получения дополнительной информации посмотрите Ссылку на протокол UIViewControllerTransitionCoordinatorContext.
Возвращаемое значение
YES
true
если указанная анимация успешно ставится в очередь для выполнения; иначеNO
false
.Обсуждение
Используйте этот метод для выполнения анимаций, не обрабатывающихся самими объектами Animator. Анимации Вы указываете в
animation
параметр должен все иметь место в представлении, убывавшем от представления, которое Вы указываете вview
параметр.Анимации в
animation
параметр обычно выполняется одновременно с анимациями перехода контроллера представления. То поведение применяется когда объект AnimatoranimateTransition:
метод реализован с помощьюUIView
- основанные анимации. Если использование объекта Animator Базовая Анимация для анимации содержания уровня непосредственно анимации выполняются вскоре послеanimateTransition:
возвраты метода.Этот метод возвраты
NO
false
когда блок вanimation
параметр не может быть поставлен в очередь для выполнения. Блок завершения может все еще работать, даже когда возвращается этот методNO
false
.Оператор импорта
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 и позже.