有没有办法改变UIView的foregroundColor?
我正在使用像这个“>”的UIView(drawRect)创建一个箭头,背景清晰,只有两条黑线。这很有效。但之后我想改变“>”的颜色。例如,从黑色到红色。使用CAKeyframeAnimation可以很好地在其中包含动画,例如从黑色到红色的渐变。我可以为borderColor和backgroundColor执行此操作,但这些属性不是我正在寻找的属性。
我正在使用这个动画块更改另一个UIView的borderColor。我想对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"];
感谢您的帮助,谢谢!
答案 0 :(得分: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);