Je suis nouveau sur iPhone dev, et très rouillé avec la programmation de style C, à savoir les pointeurs. J'ai créé une classe RGBColor qui contient trois nombres de rouge, vert et bleu. Dans cette classe, j'ai une méthode statique pour retourner un UIColor pour trois valeurs int RVB. J'utilise cette méthode pour changer la couleur de fond de trois curseurs.Méthode ne fonctionne pas bien
Voici la méthode statique:
+(UIColor *)getColorFromRed:(int)redValue green:(int)greenValue blue:(int)blueValue
{
UIColor *color = [[UIColor alloc]initWithRed:redValue/256
green:greenValue/256
blue:blueValue/256
alpha:1.0];
return color;
}
J'ai d'abord codé la méthode comme cela, mais il a changé quand il ne fonctionne pas:
+(UIColor *)getColorFromRGB:(int)redValue :(int)greenValue :(int)blueValue
{
UIColor *color = [[UIColor alloc]initWithRed:redValue/256
green:greenValue/256
blue:blueValue/256
alpha:1.0];
return color;
}
Sur la base de ma compréhension, que ce soit la première ou la seconde est une manière valide d'écrire une méthode.
Maintenant, j'utiliser cette méthode pour changer la couleur de fond à mon avis avec ma fonction changeBackgroundColor, mais il ne fonctionne pas:
- (void)changeBackgroundColor
{
UIColor *color = [RGBColor getColorFromRed:redSlider.value
green:greenSlider.value
blue:blueSlider.value];
[background setBackgroundColor:color];
}
Si je complètement court-circuiter ma méthode statique, et juste le changeBackgroundColor méthode créer l'UIColor, les changements de couleur d'arrière-plan.
- (void)changeBackgroundColor
{
UIColor *color = [[UIColor alloc]initWithRed:redSlider.value/256
green:greenSlider.value/256
blue:blueSlider.value/256
alpha:1.0];
[background setBackgroundColor:color];
}
Le problème est trivial à résoudre: n'utilisez simplement pas la méthode statique. Je ne comprends pas pourquoi ça ne marche pas. Y at-il une sorte de transfert de pointeur vs d'objet, je suis en train de jouer avec la valeur de retour?
Ce fut le problème. Merci! – Ray
lorsque vous divisez et int avec et int seule la partie entière du résultat est renvoyée. (donc toute division de x/y où x
giorashc