NSAnimationContext
NSAnimationContext походит CATransaction и подобны в полном понятии NSGraphicsContext. Каждый поток поддерживает свой собственный штабель nestable NSAnimationContext экземпляры, с каждым новым экземпляром, инициализированным как копия экземпляра ниже (так, наследовав его текущие свойства).
Многократный NSAnimationContext экземпляры могут быть вложены, позволив данному блоку кода инициировать анимации с помощью его собственной указанной продолжительности, не влияя на анимации, инициируемые путем окружения кода.
[NSAnimationContext beginGrouping];// Animate enclosed operations with a duration of 1 second[[NSAnimationContext currentContext] setDuration:1.0];[[aView animator] setFrame:newFrame];...[NSAnimationContext beginGrouping];// Animate alpha fades with half-second duration[[NSAnimationContext currentContext] setDuration:0.5];[[aView animator] setAlphaValue:0.75];[[bView animator] setAlphaValue:0.75];[NSAnimationContext endGrouping];...// Will animate with a duration of 1 second[[bView animator] setFrame:secondFrame];[NSAnimationContext endGrouping];
Оператор импорта
Swift
import AppKit
Objective C
@import AppKit;
Доступность
Доступный в OS X v10.5 и позже.
-
Создает новую группировку анимации.
Объявление
Swift
class func beginGrouping()Objective C
+ (void)beginGroupingОператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.5 и позже.
-
Заканчивает группировку текущей анимации.
Объявление
Swift
class func endGrouping()Objective C
+ (void)endGroupingОператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.5 и позже.
-
Возвращает контекст текущей анимации.
Объявление
Swift
class func currentContext() -> NSAnimationContextObjective C
+ (NSAnimationContext *)currentContextВозвращаемое значение
Контекст текущей анимации.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.5 и позже.
-
completionHandler completionHandlerСвойствоБлок завершения, который вызывают, когда завершаются анимации в группировке.
Объявление
Swift
var completionHandler: (() -> Void)?Objective C
@property(copy) void (^completionHandler)(void)Обсуждение
Если установлено в не -
nilзначение, контекстcompletionHandlerкак гарантируют, вызовут на основном потоке, как только все анимации впоследствии добавили к токуNSAnimationContextгруппировка завершилась или была отменена.Этот метод управляет базовым
CATransactioncompletionBlockсвойство, несмотря на то, что Набор Приложения может присвоить различное, посредническоеcompletionBlockк токуCATransaction.Обработчик завершения ожидает всех анимаций, к которым обработчик применяется, независимый от того, оценены ли они Набором Приложения или делегированы к Базовой Анимации для оценки в дереве рендеринга перед увольнением.
Если никакие анимации не добавляются, прежде чем текущая группировка заканчивается — или completionHandler установлен в различное значение — обработчик будет сразу вызван.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.7 и позже.
-
Позволяет Вам указывать тело блока завершения после набора действий анимации, завершение которых инициирует блок завершения.
Объявление
Swift
class func runAnimationGroup(_changes: (NSAnimationContext!) -> Void, completionHandlercompletionHandler: (() -> Void)?)Objective C
+ (void)runAnimationGroup:(void (^)(NSAnimationContext *context))changescompletionHandler:(void (^)(void))completionHandlerПараметры
changesБлочный объект, содержащий анимации для этой группы транзакции.
contextпараметр передает ток потокаNSAnimationContextк Блоку как удобство таким образом кодируйте в Блоке, хотящем изменить или запросить свойства токаcontextне должен вызыватьcurrentContext.Блочный объект не возвращает значения.
completionHandlerКогда анимации для этой группы транзакции завершаются, Блочный объект вызвал.
Блочный объект не берет параметров и не возвращает значения.
Обсуждение
Используя этот метод позволяет Вам более естественно анимациям группы и Блоку завершения.
Использование в качестве примера следующие. Используя этот метод Вы записали бы следующий фрагмент кода:
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){// Start some animations.[[myView animator] setFrameSize:newViewSize];[[myWindow animator] setFrame:newWindowFrame display:YES];} completionHandler:^{// This block will be invoked when all of the animations// started above have completed or been cancelled.NSLog(@"All done!");}];
Вышеупомянутый код семантически эквивалентен следующему:
[NSAnimationContext beginGrouping];[NSAnimationContext setCompletionHandler:^{// This block will be invoked when all of the animations// started below have completed or been cancelled.NSLog(@"All done!");}];// Start some animations.[[myView animator] setFrameSize:newViewSize];[[myWindow animator] setFrame:newWindowFrame display:YES];[NSAnimationContext endGrouping];
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.7 и позже.
-
продолжительность продолжительностьСвойствоПродолжительность, используемая анимациями, создается в результате установки новых значений для animatable свойства.
Обсуждение
Любые анимации, происходящие в результате установки значений animatable свойств в текущем контексте, будут работать за этой продолжительностью.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.5 и позже.
-
timingFunction timingFunctionСвойствоФункция синхронизации, используемая для всех анимаций в этой анимации, проксирует группу.
Объявление
Swift
var timingFunction: CAMediaTimingFunction?Objective C
@property(strong) CAMediaTimingFunction *timingFunctionОбсуждение
NSAnimationContext, синхронизирующий функцию, походит на CATransaction
setAnimationTimingFunction:метод.Анимации инициировали через синтаксис прокси «аниматора», которые не имеют явно указанных функций синхронизации, наследует включение
NSAnimationContextэкземплярtimingFunctionесли это неnil(который является значением по умолчанию).Как с существующим
durationсвойство, изменяя функцию синхронизации вызывает то же изменение в базовом экземпляре CATransactionanimationTimingFunction.Также как с
durationсвойство, можно изменить timingFunction любое число раз в данном NSAnimationContextbeginGroupingиendGroupingблок. Изменения вtimingFunctionприменится к любым анимациям, впоследствии инициирующимся во что группировка NSAnimationContext, доtimingFunctionвозможно изменяется снова.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.7 и позже.
-
Определите, включены ли анимации или не для анимаций, происходящих в результате другого изменения свойства.
Объявление
Swift
var allowsImplicitAnimation: BoolObjective C
@property BOOL allowsImplicitAnimationОбсуждение
Используя
animatorпрокси автоматически установитallowsImplicitAnimationкYEStrue. КогдаYEStrue, другие свойства могут неявно анимировать вместе с первоначально измененным свойством.Например, вызов
[[view animator] setFrame:frame]позволит подпредставлениям также анимировать свои позиции кадра. Когда значениеNOfalseповедение является diabled.Значение по умолчанию
NOfalse.Когда уровень отступил на OS v10.8 и позже, это только применимо.
Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.8 и позже.
