joh*_*nkj 5 iphone uiview uicolor cabasicanimation caanimation
如何在UIView中从一种背景颜色淡化为另一种颜色?
在javascript(jQuery)中,可以通过执行以下操作来完成:
$('body').animate({ backgroundColor: "#ff00ff"});
如果我将颜色转换为HSV会更容易吗?
编辑:试图用CABasicAnimation做它,但它由于不明原因闪烁白色.:/
CABasicAnimation* fade = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
fade.fillMode = kCAFillModeForwards;
fade.removedOnCompletion = NO;
// fade.fromValue = (id)[self.view backgroundColor].CGColor;
fade.toValue = (id)[UIColor greenColor].CGColor;
[self.view.layer addAnimation:fade forKey:@"fade"];
Run Code Online (Sandbox Code Playgroud)
然后我试图找到另一种方法去做,并偶然发现"隐式动画".以下工作与一秒钟的漂亮淡出:
[UIView beginAnimations:@"fade" context:nil];
[UIView setAnimationDuration:1];
[[self view] setBackgroundColor: [UIColor greenColor]];
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)
谢谢,StackOverflow,帮助每个人学习更多.:)
您不需要创建两个 UIView 和淡入淡出 - 当颜色属性本身可设置动画时,为什么要费心让一个额外的多余视图挂在周围呢?
您可以如上所示使用 CAAnimation,但无需调整两个视图的不透明度,只需调整其中一个视图的背景颜色即可。