1

有没有办法改变 UIView 的前景颜色?

我正在使用像这样“>”的 UIView (drawRect) 创建一个箭头,背景清晰,只有两条黑线。这很好用。但之后我想将“>”的颜色从黑色更改为红色,例如。使用 CAKeyframeAnimation 在其中添加动画效果会很好,例如从黑色到红色的渐变。我可以为borderColor 和backgroundColor 做到这一点,但这些属性不是我正在寻找的。

我正在使用这个动画块更改另一个 UIView 的边框颜色。我想对 foregroundColor 做同样的事情,但它在 iOS 中不起作用。

CAKeyframeAnimation* colorAnim = [CAKeyframeAnimation animationWithKeyPath:@"borderColor"];
NSArray* colorValues = [NSArray arrayWithObjects:(id)[UIColor blackColor].CGColor,(id)[UIColor redColor].CGColor,  nil];
colorAnim.values = colorValues;
colorAnim.calculationMode = kCAAnimationPaced;
colorAnim.duration = 5.0;
colorAnim.repeatCount = 1;
[self.myView.layer addAnimation:colorAnim forKey:@"borderColor"];

我很感激任何帮助,谢谢!

4

1 回答 1

0

该类UIView没有foregroundColor属性,因此您必须自己实现它。在您的 UIView 子类界面中,定义属性:

@property (nonatomic, strong) UIColor *foregroundColor;

在您的子类实现中,覆盖setForegroundColor:setter 方法:

- (void)setForegroundColor:(UIColor *)newForegoundColor
{
    _foregroundColor = newForegroundColor;
    [self setNeedsDisplay]; // This is need so that drawRect: is called
}

在您在子类中使用的任何初始化程序中,将foregroundColor属性设置为默认值:

self.foregroundColor = [UIColor blackColor];

在您的drawRect:实现中,使用该foregroundColor属性来描边您正在绘制的 V 形:

CGContextSetStrokeColorWithColor(context, self.foregroundColor.CGColor);
于 2013-10-29T11:21:22.780 回答