gpt4 book ai didi

ios - 如何淡化 UIView 背景颜色 - iOS 5

转载 作者:行者123 更新时间:2023-12-01 17:15:02 25 4
gpt4 key购买 nike

我在尝试让自定义 UIView 类淡化它的背景时遇到了麻烦。我已经检查了以下 StackOverflow 问题,但它们似乎对我不起作用。

Fade background-color from one color to another in a UIView

How do you explicitly animate a CALayer's backgroundColor?

所以我有一个自定义的 UIView,用户可以在其中绘制东西。如果他们画的不正确,我想让背景颜色变红然后变回白色。

我在自定义 UIView 中有这个自定义方法,称为

- (void)indicateMistake;

当我调用该方法时,我希望它执行背景颜色动画,所以我在方法中有这个:
CABasicAnimation* fade = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
fade.fromValue = (id)[UIColor whiteColor].CGColor;
fade.toValue = (id)[UIColor redColor].CGColor;
[fade setDuration:3];
[self.layer addAnimation:fade forKey:@"fadeAnimation"];

但是当我这样做时似乎什么都没有发生。

所以然后我尝试了一个愚蠢的旋转动画,看看它是否有效:
CABasicAnimation* rotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
rotate.toValue = [NSNumber numberWithInt:M_PI];
[rotate setDuration:1];
[self.layer addAnimation:rotate forKey:@"rotateAnimation"];

出于某种原因,自定义 UIView 会旋转。

然后阅读更多 StackOverflow 答案我尝试了这个:
[UIView animateWithDuration:3 animations:^{
[self setBackgroundColor: [UIColor redColor]];
} completion:^(BOOL finished) {
[self setBackgroundColor: [UIColor whiteColor]];
}];

这会将颜色从红色变为白色,然后立即变回白色。有时它是如此之快,我有时看不到它发生。如果我注释掉 [self setBackgroundColor: [UIColor whiteColor]];它保持红色。但是有节点逐渐从白色到红色的效果。

我已经没有想法了..任何帮助将不胜感激!

最佳答案

[UIView animateWithDuration:0.3f animations:^{
fade.layer.backgroundColor = [UIColor redColor].CGColor;
}

这假设您已将淡入淡出 View 预设为您想要的白色。

您最后一次尝试动画跳回白色的原因是因为在 animateWithDuration 的完成子句中,您将 View 设置回白色。

该完成子句在动画完成时执行,因此动画(白色-红色)发生,然后您的编译器完成并将淡入淡出 View 跳回白色。

作为额外的奖励:

我敢肯定,您可能想知道如何才能变回白色。

好吧,假设按下 UIButton调用这个名为“animateColors”的函数。话虽如此,只需实现一个 BOOL。
- (void)animateColors {        
if (!isRed) {
[UIView animateWithDuration:0.3f animations:^{
fade.layer.backgroundColor = [UIColor redColor].CGColor;
}];
isRed = YES;
} else if (isRed) {
[UIView animateWithDuration:0.3f animations:^{
fade.layer.backgroundColor = [UIColor whiteColor].CGColor;
}];
isRed = NO;
}
}

显然,您将要在接口(interface)或头文件中对 bool 值 isRed 进行属性声明。

关于ios - 如何淡化 UIView 背景颜色 - iOS 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14543266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com