【问题标题】:Core Animation with Blocks on the Mac?Mac 上带有 Blocks 的核心动画?
【发布时间】:2011-09-21 07:26:32
【问题描述】:

是否可以像在 iOS 上一样在 Mac 上使用块来使用 Core Animation 执行动画?我希望能够在动画结束时设置完成块以删除视图等。我知道这可以通过委托来实现,但显然带有动画的块的全部意义在于避免这种痛苦。

【问题讨论】:

    标签: objective-c macos core-animation objective-c-blocks


    【解决方案1】:

    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];
    

    【讨论】:

      【解决方案2】:

      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);
      

      【讨论】:

        【解决方案3】:

        有时。 NSAnimationContext 和 NSAnimationGroup 都具有 completionHandler 属性,您可以为其分配块,但许多其他属性则没有。

        【讨论】:

          猜你喜欢
          • 2011-06-16
          • 1970-01-01
          • 1970-01-01
          • 2011-07-13
          • 2013-04-04
          • 2011-11-23
          • 2017-06-21
          • 1970-01-01
          • 2011-09-26
          相关资源
          最近更新 更多