【发布时间】:2011-09-21 07:26:32
【问题描述】:
是否可以像在 iOS 上一样在 Mac 上使用块来使用 Core Animation 执行动画?我希望能够在动画结束时设置完成块以删除视图等。我知道这可以通过委托来实现,但显然带有动画的块的全部意义在于避免这种痛苦。
【问题讨论】:
标签: objective-c macos core-animation objective-c-blocks
是否可以像在 iOS 上一样在 Mac 上使用块来使用 Core Animation 执行动画?我希望能够在动画结束时设置完成块以删除视图等。我知道这可以通过委托来实现,但显然带有动画的块的全部意义在于避免这种痛苦。
【问题讨论】:
标签: objective-c macos core-animation objective-c-blocks
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];
【讨论】:
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);
【讨论】:
有时。 NSAnimationContext 和 NSAnimationGroup 都具有 completionHandler 属性,您可以为其分配块,但许多其他属性则没有。
【讨论】: