Основная анимация с блоками на Mac? - PullRequest
0 голосов
/ 21 сентября 2011

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

Ответы [ 3 ]

3 голосов
/ 26 апреля 2013

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];
1 голос
/ 22 сентября 2011

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

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);
0 голосов
/ 26 апреля 2013

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

...