Подтвердить что ты не робот

Как создать UIColor из RGBA?

Я хочу использовать NSAttributedString в моем проекте, но когда я пытаюсь установить цвет, который не соответствует стандартным наборам (redColor, blackColor, greenColor и т.д.) UILabel отображает эти буквы белого цвета. Вот моя строка этого кода.

[attributedString addAttribute:NSForegroundColorAttributeName
                         value:[UIColor colorWithRed:66
                                               green:79
                                                blue:91
                                               alpha:1]
                         range:NSMakeRange(0, attributedString.length)];

Я попытался сделать цвет с CIColor из рамок Core Image, но показал те же результаты. Что я должен изменить в своем коде для правильной работы?

спасибо для ответов, ребята!

4b9b3361

Ответ 1

Ваши значения неверны, вам нужно разделить каждое значение цвета на 255.0.

[UIColor colorWithRed:66.0f/255.0f
                green:79.0f/255.0f
                 blue:91.0f/255.0f
                alpha:1.0f];

Состояние документов:

+ (UIColor *)colorWithRed:(CGFloat)red
                    green:(CGFloat)green
                     blue:(CGFloat)blue
                    alpha:(CGFloat)alpha

Параметры

красный Красный компонент цветового объекта, заданный как значение от 0.0 до 1.0.

зеленый Зеленый компонент цветового объекта, заданный как значение от 0.0 до 1.0.

синий Синий компонент цветового объекта, заданный как значение от 0.0 до 1.0.

альфа Значение непрозрачности цветного объекта, заданное как значение от 0.0 до 1.0.

Ссылка здесь.

Ответ 2

Один из моих любимых макросов, без проекта:

#define RGB(r, g, b) [UIColor colorWithRed:(float)r / 255.0 green:(float)g / 255.0 blue:(float)b / 255.0 alpha:1.0]
#define RGBA(r, g, b, a) [UIColor colorWithRed:(float)r / 255.0 green:(float)g / 255.0 blue:(float)b / 255.0 alpha:a]

Использование:

[attributedString addAttribute:NSForegroundColorAttributeName
                         value:RGB(66, 79, 91)
                         range:NSMakeRange(0, attributedString.length)];

Ответ 3

UIColor использует диапазон от 0 до 1.0, а не целые числа до 255.. Попробуйте следующее:

// create color
UIColor *color = [UIColor colorWithRed:66/255.0
                                 green:79/255.0
                                  blue:91/255.0
                                 alpha:1];

// use in attributed string
[attributedString addAttribute:NSForegroundColorAttributeName
                         value:color
                         range:NSMakeRange(0, attributedString.length)];

Ответ 4

Пожалуйста, попробуйте код

[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:77.0/255.0f green:104.0/255.0f blue:159.0/255.0f alpha:1.0] range:NSMakeRange(0, attributedString.length)];

как

Label.textColor=[UIColor colorWithRed:77.0/255.0f green:104.0/255.0f blue:159.0/255.0f alpha:1.0];  

Компоненты UIColor RGB масштабируются между 0 и 1, а не до 255.

Ответ 5

Так как @Jaswanth Kumar спросил, здесь Swift версия LSwift:

extension UIColor { convenience init(rgb:UInt, alpha:CGFloat = 1.0) { self.init( red: CGFloat((rgb & 0xFF0000) >> 16) / 255.0, green: CGFloat((rgb & 0x00FF00) >> 8) / 255.0, blue: CGFloat(rgb & 0x0000FF) / 255.0, alpha: CGFloat(alpha) ) } }

Использование: let color = UIColor(rgb: 0x112233)