【发布时间】:2014-09-03 16:07:09
【问题描述】:
我正在使用CATransition 为UILabel 设置动画以“蒸发”出屏幕。
我想让标签文本变成绿色,然后离开屏幕。
以下代码可以很好地“蒸发”标签,但在制作动画之前不会改变其颜色:
CATransition *transition = [CATransition animation];
transition.beginTime = CACurrentMediaTime();
transition.duration = 0.4;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromTop;
[self.displayLabel.layer addAnimation:transition forKey:@"evaporate"];
self.displayLabel.textColor = [self greenColor];
self.displayLabel.text = @" ";
在标签上调用 setNeedsDisplay 不起作用。
无法使用 CABasicAnimation,因为标签文本正在更改。
我做错了什么,我该如何解决?
【问题讨论】:
-
为什么这被否决了?
-
让我们看看文档是怎么说的,经过一分钟的研究:"
UIView类的以下属性是可动画的:frame、bound、center、@ 987654330@,alpha,backgroundColor,contentStretch"...也许这就是为什么你不能为textColor设置动画,也许? -
@holex 我们在这里讨论的是使用 CoreAnimation,而不是基于 UIView 的动画。 AFAIK,CoreAnimation 与内容无关。我只希望 CA 在 textColor 更改并且图层更新之后为标签设置动画。文档还说
CALayer的contents属性是可动画的。
标签: ios objective-c cocoa-touch core-animation catransition