2016-09-05 7 views
3

사용자가 그리는 데 사용할 색상을 선택할 수있는 버튼이있는 iOS 그리기 앱이 있습니다. 내 브러쉬는 RGB 값을 사용하지만 색 상수는 UIColors이므로 변환해야합니다. 시도했습니다UIColor의 RGB 값에 어떻게 액세스합니까?

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 질문에서 발견했습니다. 내가 라인 8의 RGB 값을 얻을 때 그러나, 나는이 오류가 :

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은 get-only입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

'var에 ciColor : CIColor는 설명 \t 수신기와 관련된 코어 이미지 색상 {얻을}. Color 객체가 Core Image 색상으로 초기화되지 않은 경우이 속성이 예외를 발생시킵니다. ' –

+1

CoreImage.CIColor 초기화기를 사용하여 UIColor CoreImage.CIColor (color : colors [index])에서 새 색상을 만들 수 있습니다. '옵션으로 돌아 가지 않는다는 이점이 있습니다. –

답변

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)