Cocoa动画在单个视图中使用CATransition

时间:2010-09-13 19:49:47

标签: cocoa macos animation

我想使用CATransition在视图的不同状态之间提供淡入淡出的动画。但是,这似乎不适用于单个视图(我发现所有示例都使用CATransition在不同视图之间切换)。相比之下,CABasicAnimation工作正常。

我的example code显示了我正在做的事情。我有一个自定义视图(TTView),其中包含两个我想要设置动画的属性。一种是使用CABasicAnimation(简单插值)动画的颜色。另一种是布尔状态,我想在它改变时实现淡化效果。 (忽略这个例子使用它来改变矩形的大小,这只是为了保持简单。)

我做错了什么,或者CATransition只是在一个视图中不起作用?

1 个答案:

答案 0 :(得分:0)

代码有点大,但这里是TTView实现中最相关的部分。 scale属性是布尔值,我希望通过转换为其设置动画。

+ (id) defaultAnimationForKey: (NSString *)key
{
  if ([key isEqualToString: @"color"]) {
    return [CABasicAnimation animation];

  } else if ([key isEqualToString: @"scale"]) {
    return [CATransition animation];
  }

  return [super defaultAnimationForKey:key];
}

/* ... */

- (IBAction) toggleScale: (id)sender
{
  [[self animator] setScale: !self.scale];
}

我刚注意到CATransition不是CAPropertyAnimation的子类,所以也许这是我真正的问题。