我有一个UIView子类,用这段代码绘制一个简单的矩形:
- (void)drawRect:(CGRect)rect {
//Get the CGContext from this view
CGContextRef context = UIGraphicsGetCurrentContext();
CGColorRef myColor = [UIColor colorWithHue:0 saturation:1 brightness:0.61 alpha:1].CGColor;
//Draw a rectangle
CGContextSetFillColorWithColor(context, myColor);
//Define a rectangle
CGContextAddRect(context, CGRectMake(0, 0, 95.0, 110.0));
//Draw it
CGContextFillPath(context);
}
然后,我有一个单独的UIViewController,里面有一个UISlider
-(IBAction) sliderChanged:(id) sender{
UISlider *slider = (UISlider *)sender;
int sliderValue = (int)[slider value];
float sliderFloat = (float) sliderValue;
NSLog(@"sliderValue ... %d",sliderValue);
NSLog(@"sliderFloat ... %.1f",sliderFloat / 100);
}
这里,在sliderChanged中,我希望能够动态更改在UIView子类中绘制的矩形的背景颜色。我应该怎么做呢?
谢谢你!答案 0 :(得分:2)
创建UIView-Subclass的属性,该属性包含UIColor(或CGColor)值:
在标题中:
@interface MySub : UIView {
NSColor* rectColor;
}
@property (retain) NSColor* rectColor;
@end
在实施文件中:
@implementation MySub
@synthesize rectColor
@end
现在可以使用myViewInstance.rectColor = SomeNSColor;
设置颜色设置颜色后,必须重新绘制视图才能使用新的背景颜色绘制矩形:
[myViewInstance setNeedsDisplay];