установка цвета фона UIView из UIViewController - PullRequest
2 голосов
/ 09 декабря 2010

У меня есть подкласс 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. Как я должен идти о реализации этого?

спасибо!

1 Ответ

2 голосов
/ 09 декабря 2010

Создайте свойство вашего подкласса UIView, которое содержит значение UIColor (или CGColor):

В заголовке:

@interface MySub : UIView {
NSColor* rectColor;
}

@property (retain) NSColor* rectColor;
@end

В файле реализации:

@implementation MySub
@synthesize rectColor
@end

Теперь вы можете установить цвет с помощью myViewInstance.rectColor = SomeNSColor;

После того, как вы установили цвет, вы должны перерисовать вид, чтобы нарисовать прямоугольник с новым цветом фона:

[myViewInstance setNeedsDisplay];
...