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