OS X中的动画视图大小

时间:2011-08-21 09:02:34

标签: objective-c cocoa macos

Mail.app在左下角有一个小活动窗格,在激活时会滑入。我注意到它在动画期间重新标注了它上面的源列表(滚动条同时调整大小)。

如何实现?我没有找到一种内置的方式来为视图框设置动画,就像你可以为windows做的那样。

1 个答案:

答案 0 :(得分:2)

您可以使用核心动画。此处显示了使用Core Animation更改帧的示例:http://www.macresearch.org/tutorial-intro-core-animation

您还可以使用NSViewAnimation来制作动画,如下所示:http://www.cocoadev.com/index.pl?AnimatedNSSplitView

第三种方法是使用GCD自己做:

CGFloat duration = 2; //animation duration (seconds)

int N = 100; //animation fineness
CGFloat dt = duration/N; //time change

dispatch_async(dispatch_get_global_queue(0,0), ^{
  for (int i = 1; i <= N; i++)
  {
    NSDate *future = [NSDate dateWithTimeIntervalSinceNow:dt];
    [NSThread  sleepUntilDate:future];

    //calculate your new frame/splitview setup

    dispatch_async(dispatch_get_main_queue(), ^{
      //apply the new frame/splitview setup
    });
  }
});