在单个 View 中使用 CATransition 的 Cocoa 动画

标签 cocoa macos animation

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

我的example code显示我在做什么。我有一个自定义 View (TTView),其中有两个我想要设置动画的属性。一种是颜色,使用 CABasicAnimation 进行动画处理(简单插值)。另一种是 bool 状态,我想在变化时实现淡入淡出的效果。 (忽略该示例使用它仅更改矩形大小的事实,这只是为了保持简单。)

我做错了什么,还是CATransition在单个 View 中不起作用?

最佳答案

代码有点大,但这里是 TTView 实现中最相关的部分。 scale 属性是 bool 值,我希望通过过渡对其变化进行动画处理。

+ (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 的子类,所以也许这才是我真正的问题。

关于在单个 View 中使用 CATransition 的 Cocoa 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3703863/

相关文章:

macos - NSToolbarItem: "Make sure this toolbar item has a valid frame/min/max size"?

objective-c - cocoa - 如何以编程方式检索您的应用程序正在使用的内存量?

cocoa - 在 OSX 应用程序中显示已知 Wifi 网络列表需要钥匙串(keychain)访问

objective-c - 简单的绘图应用程序设计——Hillegass Book,Ch。 18

CSS3 无法反转动画

ios - IOS/Objective-C:360图像旋转问题

objective-c - UIImage,有没有一种简单的方法可以使其变暗或全黑

swift - 将 SwiftUI View 转换为 NSImage

macos - XCode IBAction NSButton 显示/隐藏单独的图像?

android - 使用自定义动画显示 Activity