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() -> NSAnimationContext
Objective 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
группировка завершилась или была отменена.Этот метод управляет базовым
CATransaction
completionBlock
свойство, несмотря на то, что Набор Приложения может присвоить различное, посредническое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))
changes
completionHandler:(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: Bool
Objective C
@property BOOL allowsImplicitAnimation
Обсуждение
Используя
animator
прокси автоматически установитallowsImplicitAnimation
кYES
true
. КогдаYES
true
, другие свойства могут неявно анимировать вместе с первоначально измененным свойством.Например, вызов
[[view animator] setFrame:frame]
позволит подпредставлениям также анимировать свои позиции кадра. Когда значениеNO
false
поведение является diabled.Значение по умолчанию
NO
false
.Когда уровень отступил на OS v10.8 и позже, это только применимо.
Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.8 и позже.