Основная анимация с блоками на Mac?

Можно ли выполнять анимацию с помощью Core Animation с использованием блоков на Mac аналогично тому, как это можно сделать на iOS? Я хотел бы иметь возможность настроить блоки завершения в конце анимации для удаления просмотров и т. д. Я знаю, что этого можно добиться с помощью делегатов, но, очевидно, весь смысл блоков с анимацией заключается в том, чтобы избежать этой боли.


person bryguy1300    schedule 21.09.2011    source источник


Ответы (3)


CATransaction + (void) setCompletionBlock: (void (^) (void)) block

Объект блока, вызываемый после завершения анимации для этой группы транзакций.

[CATransaction begin];
[CATransaction setAnimationDuration:5.0];
[CATransaction setCompletionBlock:^{ 
    // this will be done when animation has completed
}];
//do some things to your layers
[CATransaction commit];
person mahal tertin    schedule 26.04.2013

Twitter предлагает TwUI, который использует базовую анимацию с блоками. Это может помочь вам.

https://github.com/twitter/twui

https://github.com/twitter/twui/blob/master/lib/UIKit/TUIView+Animation.m

@interface TUIViewAnimation : NSObject <CAAction>
{
    /* snip */
    void (^animationCompletionBlock)(BOOL finished);
person Kazuki Sakamoto    schedule 21.09.2011

Иногда NSAnimationContext и NSAnimationGroup имеют свойства completionHandler, которым можно назначать блоки, но многие другие — нет.

person Caleb    schedule 26.04.2013