2016-09-05 2 views
3

У меня есть приложение для рисования iOS с кнопками, которые позволяют пользователю выбирать цвета для рисования. Поскольку моя кисть использует значения RGB, но мои цветовые константы - UIColors, мне нужно преобразовать. Я попробовалКак получить доступ к значениям RGB для UIColor?

private var currentButton: UIButton? { 
    willSet{ 
     currentButton?.layer.borderWidth = 0 
    } 
    didSet{ 
     currentButton?.layer.borderWidth = 2 
     let index = (currentButton?.tag)! - 1 
     drawView.brush.blue = colors[index].ciColor.blue //Here is where I get the error 
     drawView.brush.green = colors[index].ciColor.green 
     drawView.brush.red = colors[index].ciColor.red 
    } 
} 

Что я нашел в другом вопросе StackOverflow. Однако, когда я пытаюсь получить значение RGB в строке 8, я получаю эту ошибку:

Terminating app due to uncaught exception 
'NSInvalidArgumentException', reason: '*** -CIColor not defined for the UIColor UIExtendedSRGBColorSpace 1 1 1 1; need to first convert colorspace.' 

Это ясно говорит, что мне нужно, чтобы преобразовать цветовое пространство. Но CIColor.colorSpace is get-only. Что я делаю не так?

+0

'вар ciColor: CIColor {} получить Описание \t Ядро цвет изображения, связанный с приемником. Это свойство выдает исключение, если цветовой объект не был инициализирован цветом основного изображения. ' –

+1

Вы можете использовать инициализатор CoreImage.CIColor для создания нового цвета из вашего UIColor' CoreImage.CIColor (color: colors [index]). Blue 'с тем преимуществом, что он не возвращает необязательный. –

ответ

6

Использование getRed(_:green:blue:alpha:):

var red: CGFloat = 0 
var green: CGFloat = 0 
var blue: CGFloat = 0 
var alpha: CGFloat = 0 

color.getRed(&red, green: &green, blue: &blue, alpha: &alpha) 
Смежные вопросы