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

Iphone 如何淡入/淡出矩形或文本?,iphone,cocoa-touch,core-animation,Iphone,Cocoa Touch,Core Animation,我想在矩形或文本中实现淡入/淡出效果。我在UIVIew的drawRect:方法中调用CGContextFillRect或CGContextShowText。我想知道是否有一种方法可以在不使用UIView支持的情况下实现动画(即[UIView beginAnimations::]。我想要达到的效果类似于Microsoft bing serach引擎中的效果,比如当你在网页上移动时,那些小的黑色正方形会淡入/淡出。提前感谢!为什么不想使用UIView的动画块?为视图的不透明度变化(UILabel或其

我想在矩形或文本中实现淡入/淡出效果。我在UIVIew的drawRect:方法中调用CGContextFillRect或CGContextShowText。我想知道是否有一种方法可以在不使用UIView支持的情况下实现动画(即[UIView beginAnimations::]。我想要达到的效果类似于Microsoft bing serach引擎中的效果,比如当你在网页上移动时,那些小的黑色正方形会淡入/淡出。提前感谢!

为什么不想使用UIView的动画块?为视图的不透明度变化(UILabel或其他)设置动画这样做非常简单。例如,以下代码将在0.5秒内淡出给定视图:

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

viewToFadeOut.alpha = 0.0f;

[UIView commitAnimations];  
要淡入,只需将0.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属性的动画(与上面的CABASICanization相同,仅将
opacity
替换为
borderColor
,将toValue替换为CGColor强制转换为
id
).

Emm..我想要的是淡入/淡出视图上的文本,而不是视图本身。是的,我可以为要在视图上渲染的每个文本片段创建UILabel,并使用UIView动画支持。但我想知道这是否是一种简单且成本较低的方法。因为我只想在视图上渲染一些静态文本。如果每个文本都是repr由UILabel显示,如果上面有100多个文本怎么办?因此我选择使用CGContextShowText,但还不知道如何实现淡入/淡出。再次感谢。石英绘制是一项昂贵的操作,尤其是在绘制文本时。如果在视图中为每个文本元素使用石英,则更改其中一个文本元素t项,您仍然需要重新绘制整个视图。确定使用核心动画制作的100个文本标签是否真的会出现问题的最好方法是在设备上试用。但是,我可以保证手动重新绘制每帧动画的文本会慢得多。@Thor-我刚刚在应用程序中试用过在这里,这两种动画方法都可以在UIScrollView中淡入淡出UIView。没有理由让UIScrollView干扰这些类型的动画。在您的情况下,一定还有其他原因。