Как правильно инициализировать UIColor из значений RGB? - PullRequest
60 голосов
/ 06 ноября 2011

Я работаю над приложением для iPhone, которое использует различные цвета.Когда пользователь выбирает кнопку определенного цвета, я соответственно устанавливаю цвет рисунка.Я получаю цвет для некоторых, но в большинстве случаев я получаю белый цвет.

Вот мой код:

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

Может кто-нибудь сказать мне, что я делаю неправильно?Sumit

Ответы [ 6 ]

184 голосов
/ 06 ноября 2011

Значения находятся в диапазоне от 0.0 до 1.0.

Например, разделите на 255., но запомните десятичную точку, чтобы получить деление с плавающей запятой, а не целочисленное.1007 * Мне нравится

selectedColor = [UIColor colorWithRed:14.0/255.0 green:114.0/255.0 blue:199.0/255.0 alpha:1];
12 голосов
/ 26 октября 2015

Прагматичный подход с 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)

   }
}
6 голосов
/ 10 января 2014

У вас есть несколько вариантов

код

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

Плагин выбора цвета для Interface Builder

Есть хорошая палитра цветов от Panic, которая хорошо работает с IB: http://panic.com/~wade/picker/

Плагин Xcode

Это дает вам графический интерфейс для выбора цветов: http://www.youtube.com/watch?v=eblRfDQM0Go

Бобы и библиотеки

Есть хорошая стая по имени MPColorTools: https://github.com/marzapower/MPColorTools

1 голос
/ 21 июня 2016

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

cell.backgroundColor = UIColor.init(red: 14.0/255.0, green: 114.0/255.0, blue: 199.0/255.0, alpha: 1)

:-)

1 голос
/ 03 апреля 2016

Вот метод, который вы можете легко превратить в категорию на UIColor, который позволит вам указать цвет на основе значений RGBA от 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];
}

Если вы сделаете его категорией UIColorрасширение, вы можете использовать его так:

UIColor *myAwesomeColor = [UIColor colorFromRGBAWithRed:48 green:119 blue:167 alpha:255];
0 голосов
/ 12 июля 2016
(ContentView.Layer.BorderColor) //CG Object
   = UIColor.LightGray.CGColor; 
...