2010-12-08 3 views
2

J'ai une sous-classe UIView qui dessine un rectangle simple avec ce code:définir une couleur de fond d'un UIView d'un 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); 

}

puis, j'ai un UIViewController séparé qui a une UISlider en elle

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

}

ici, dans sliderChanged, je voudrais t o être capable de changer dynamiquement la couleur d'arrière-plan du rectangle dessiné dans la sous-classe UIView. Comment devrais-je mettre en œuvre ceci?

merci!

Répondre

2

Créer une propriété de votre UIView-subclass qui est titulaire d'un UIColor (ou CGColor) Valeur:

Dans l'en-tête:

@interface MySub : UIView { 
NSColor* rectColor; 
} 

@property (retain) NSColor* rectColor; 
@end 

Dans le fichier de mise en œuvre:

@implementation MySub 
@synthesize rectColor 
@end 

Vous peut maintenant définir la couleur avec myViewInstance.rectColor = SomeNSColor;

Une fois que vous avez défini la couleur, vous devez redessiner la vue afin d'en tirer le rect avec la nouvelle couleur de fond:

[myViewInstance setNeedsDisplay]; 
+0

je reçois une erreur de compilation lorsque vous essayez d'ajouter les lignes NSColor « attendus spécifier-qualifier-list avant NSColor ". Puis-je utiliser UIColor à la place? – TrekOnTV2017

+0

Oups désolé. Je n'ai pas réalisé que vous êtes sur iOS. Bien sûr vous pouvez. NSColor est juste la contrepartie d'UIColor sur OSX. –

+0

merci, je me suis dit. maintenant dans ma fonction sliderChanged j'essaye de faire ceci: \t CGColorRef myColor = [couleur UIColorWithHue: 0.3 saturation: 0.3 luminosité: 0.3 alpha: 1] .CGColor; \t drawTest.rectColor = maCouleur; mais j'obtiens "Accès à la méthode de classe 'setRectColor' inconnue". Je suis sûr que je manque un pas quelque part. – TrekOnTV2017

Questions connexes