Как создать 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, но показал те же результаты.
Что я должен изменить в своем коде для правильной работы?
спасибо для ответов, ребята!
Ответы
Ответ 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)