如何淡入/淡出矩形或文本?

时间:2009-12-21 12:27:24

标签: iphone cocoa-touch core-animation

我希望达到淡入/淡出rect或text的效果。我在我的UIVIew的drawRect:方法中调用了CGContextFillRect或CGContextShowText。我想知道是否有一种方法可以在不使用UIView支持的情况下实现动画(即[UIView beginAnimations ::]。我希望实现的效果类似于微软的bing serach引擎,就像那些小黑方块淡入/当你在网页上移动时淡出。提前感谢!

1 个答案:

答案 0 :(得分:23)

为什么你不想使用UIView的动画块?使用它来动画视图(UILabel或其他)的不透明度的变化非常容易。例如,以下代码将在0.5秒的持续时间内淡出给定视图:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5f];

viewToFadeOut.alpha = 0.0f;

[UIView commitAnimations];  

要淡入,只需将1.0f的alpha值替换为1.0f。

您可以使用手动构造的CABasicAnimation来操作UIView的图层:

CABasicAnimation *fadeOutAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeOutAnimation.duration = 0.5f;
fadeOutAnimation.removedOnCompletion = NO;
fadeOutAnimation.fillMode = kCAFillModeForwards;
fadeOutAnimation.toValue = [NSNumber numberWithFloat:0.0f];
[viewToFadeOut.layer addAnimation:fadeOutAnimation forKey:@"animateOpacity"];

如果要做的只是淡入/淡出视图周围的边框,请尝试动画UIView图层的borderColor属性(与上面的CABasicAnimation相同,只用opacity替换borderColor和带有CGColor的toValue转换为id)。