2010-12-08 21 views
2

Einstellung ich eine UIView-Unterklasse, die ein einfaches Rechteck mit diesem Code zieht:eine Hintergrundfarbe eines UIView von einem UIViewController

- (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); 

}

dann habe ich einen separaten UIViewController, die eine UISlider hat darin

-(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); 

}

hier in sliderChanged, würde Ich mag t o in der Lage sein, die Hintergrundfarbe des Rechtecks, das in der UIView-Unterklasse gezeichnet wird, dynamisch zu ändern. Wie soll ich das umsetzen?

danke!

Antwort

2

eine Eigenschaft Ihrer UIView-Unterklasse erstellen, die eine UIColor (oder CGColor) Wert gilt:

In der Kopfzeile:

@interface MySub : UIView { 
NSColor* rectColor; 
} 

@property (retain) NSColor* rectColor; 
@end 

In der Implementierungsdatei:

@implementation MySub 
@synthesize rectColor 
@end 

Sie kann jetzt die Farbe mit myViewInstance.rectColor = Some NSColor;

Nachdem Sie die Farbe festgelegt haben, müssen Sie die Ansicht, um neu zu zeichnen das rect mit der neuen Hintergrundfarbe zu zeichnen:

[myViewInstance setNeedsDisplay]; 
+0

ich einen Compiler-Fehler beim Versuch, die NSColor Linien „Erwartet hinzufügen Spezifizierer-Qualifier-Liste vor NSColor ". Kann ich stattdessen UIColor verwenden? – TrekOnTV2017

+0

Hoppla, tut mir leid. Hab nicht bemerkt, dass du auf iOS bist. Natürlich kannst du. NSColor ist nur das UIColor-Gegenstück auf OSX. –

+0

danke, dachte ich. jetzt in meiner sliderChanged Funktion versuche ich dies zu tun: \t CGColorRef myColor = [UIColor colorWithHue: 0.3 Sättigung: 0.3 Helligkeit: 0.3 Alpha: 1] .CGColor; \t drawTest.rectColor = myColor; aber ich bekomme "Zugreifen auf unbekannte 'setRectColor' Klassenmethode". Ich bin mir sicher, dass ich irgendwo einen Schritt verpasse. – TrekOnTV2017

Verwandte Themen