2017-02-17 3 views
0

Когда я запускаю следующий Swift 3.0.1 линию на прошивке 10.2.1:Преобразования UIColor (расширенный диапазон SRGB) до CIColor

let color = CIColor(color: UIColor(hue: 0.72, saturation: 1.00, brightness: 0.78, alpha: 1)); 

Я получаю следующее сообщение об ошибке:

'*** -CIColor not defined for the UIColor UIExtendedGrayColorSpace 1 1; need to first convert colorspace.'

По документация:

The color object. The color information represented by this object is in an RGB colorspace. On applications linked for iOS 10 or later, the color is specified in an extended range sRGB color space. On earlier versions of iOS, the color is specified in a device RGB colorspace.

Источник: https://developer.apple.com/reference/uikit/uicolor/1621931-init

Каков соответствующий синтаксис для получения CIColor из этого UIColor теперь, когда CIColor находится в цветовом пространстве RGB устройства, а UIColor находится в расширенном цветовом пространстве sRGB?

+0

проверить этот пост http://stackoverflow.com/questions/40816422/cicolor-to-uicolor-cicolor-not-defined-for-the-uicolor-uiextendedsrgbcolorspa – Joe

+0

I посмотрел на это, но, к сожалению, этот пост идет от CIColor -> UIColor, тогда как я делаю все наоборот: переход от UIColor -> CIColor. –

+2

ваш код работает отлично, как и для меня Xcode 8.2.1 Swift 3.0.2 –

ответ

1

На основе обратной связи, представленной в комментариях, я нашел источник ошибки:

Позже в методе, я назвал .ciColor на примере UIColor. Это не удается, потому что экземпляр UIColor не был сначала создан CIColor.

Похоже, что выполнены следующие условия:

  • UIColor => CIColor: должен быть инициализирован CIColor (цвет: например UIColor) конструктора
  • CIColor => UIColor => CIColor: .ciColor доступная недвижимость.
0

Как предложил Джейк Часан, экземпляр CIColor должен быть инициализирован экземпляром UIColor. Так что этот стриж код работал для меня:

func colorToRGB(uiColor: UIColor) -> CIColor 
{ 
    return CIColor(color: uiColor) 
} 
Смежные вопросы