web-dev-qa-db-fra.com

Comment initialiser correctement les valeurs UIColor à partir de valeurs RVB?

Je travaille sur une application iPhone qui utilise différentes couleurs. Lorsque l'utilisateur sélectionne le bouton de couleur particulier, je règle la couleur de dessin en conséquence. J'obtiens la couleur pour certains mais dans la plupart des cas, je suis en blanc.

Voici mon code:

-(IBAction)colorSelected:(UIButton *)sender
{

switch (sender.tag) 
{
    case 1:
        self.drawcolor= [UIColor colorWithRed:200 green:191 blue:231 alpha:1];
        break;            
    case 2:
        self.drawcolor= [UIColor colorWithRed:163 green:73 blue:164 alpha:1];
        break;  
    case 3:
        self.drawcolor= [UIColor colorWithRed:112 green:146 blue:76 alpha:1];
        break;  
    case 4:
        self.drawcolor= [UIColor colorWithRed:63 green:72 blue:204 alpha:1];
        break;  
    case 5:
        self.drawcolor= [UIColor colorWithRed:153 green:217 blue:234 alpha:1];
        break;  
    case 6:
        self.drawcolor= [UIColor colorWithRed:0 green:162 blue:232 alpha:1];
        break;          
    case 7:
        self.drawcolor= [UIColor colorWithRed:181 green:230 blue:29 alpha:1];
        break;  
    case 8:
        self.drawcolor= [UIColor colorWithRed:34 green:177 blue:76 alpha:1];
        break;          
    case 9:
        self.drawcolor= [UIColor colorWithRed:239 green:228 blue:176 alpha:1];
        break;          
    case 10:
        self.drawcolor= [UIColor colorWithRed:255 green:201 blue:0 alpha:1];
        break;          
    case 11:
        self.drawcolor= [UIColor colorWithRed:255 green:201 blue:14 alpha:1];
        break;          
    case 12:
        self.drawcolor= [UIColor colorWithRed:237 green:28 blue:36 alpha:1];
        break;          
    case 13:
        self.drawcolor= [UIColor colorWithRed:255 green:127 blue:39 alpha:1];
        break;          
    case 14:
        self.drawcolor= [UIColor colorWithRed:255 green:174 blue:201 alpha:1];
        break;          
    case 15:
        self.drawcolor= [UIColor colorWithRed:185 green:122 blue:87 alpha:1];
        break;          
    case 16:
        self.drawcolor= [UIColor colorWithRed:136 green:0 blue:21 alpha:1];
        break;          
    case 17:
        self.drawcolor= [UIColor colorWithRed:195 green:195 blue:195 alpha:1];
        break;          
    case 18:
        self.drawcolor= [UIColor colorWithRed:127 green:127 blue:127 alpha:1];
        break;          
    case 19:
        self.drawcolor= [UIColor colorWithRed:255 green:255 blue:255 alpha:1];
        break;
    case 20:
        self.drawcolor= [UIColor colorWithRed:0 green:0 blue:0 alpha:1];
        break;  
    default:
        break;
}

self.preColor=self.drawcolor;
self.lineWidth=self.prelineWidth;
}

Quelqu'un peut-il me dire ce que je fais mal? Sumit

59
slonkar

Les valeurs sont comprises entre 0.0 et 1.0.

Par exemple. divisez par 255., mais souvenez-vous du point décimal pour obtenir une division en virgule flottante et non une division entière.

Comme

selectedColor = [UIColor colorWithRed:14.0/255.0 green:114.0/255.0 blue:199.0/255.0 alpha:1];
184
Mats

Approche pragmatique avec Swift

extension UIColor {

   convenience init(rgbColorCodeRed red: Int, green: Int, blue: Int, alpha: CGFloat) {

     let redPart: CGFloat = CGFloat(red) / 255
     let greenPart: CGFloat = CGFloat(green) / 255
     let bluePart: CGFloat = CGFloat(blue) / 255

     self.init(red: redPart, green: greenPart, blue: bluePart, alpha: alpha)

   }
}
11
user3378170

Tu as plusieurs options

Code

CGFloat red = 16.0;
CGFloat green = 97.0;
CGFloat blue = 5.0;
CGFloat alpha = 255.0;
UIColor *color = [UIColor colorWithRed:(red/255.0) green:(green/255.0) blue:(blue/255.0) alpha:(alpha/255.0)];

Plug-in de sélection de couleurs pour Interface Builder

Il y a un sélecteur de couleur sympa de Panic qui fonctionne bien avec IB: http://panic.com/~wade/picker/

Plugin Xcode

Celui-ci vous donne une interface graphique pour choisir les couleurs: http://www.youtube.com/watch?v=eblRfDQM0Go

Pods et bibliothèques

Il y a un joli module nommé MPColorTools: https://github.com/marzapower/MPColorTools

6
hfossli

Voici une méthode que vous pouvez facilement transformer en une catégorie sur UIColor qui vous permettra de spécifier une couleur basée sur des valeurs RGBA de 0 à 255.

+ (UIColor *)colorFromRGBAWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha {
    return [UIColor colorWithRed:red/255.0 green:green/255.0 blue:blue/255.0 alpha:alpha/255.0];
}

Si vous en faites une extension de catégorie UIColor, vous pouvez l’utiliser comme ceci:

UIColor *myAwesomeColor = [UIColor colorFromRGBAWithRed:48 green:119 blue:167 alpha:255];
1
Alex Zavatone
(ContentView.Layer.BorderColor) //CG Object
   = UIColor.LightGray.CGColor; 
0
Faheem