我想使用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/