2015-05-14 63 views
14

從UIColor類初始化實例時,我無法找到描述應使用哪種顏色空間作爲RGB值的文章或文檔。UIColor的默認色彩空間是多少?

文章Getting the right colors in your ios app說我們應該使用通用RGB。另一方面,我發現有幾篇文章說我們應該在iOS上使用sRGB。

似乎默認的色彩空間是sRGB的如下書面CGColorSpace Reference

有一個在使用a new color space稱爲「顯示P3」在iPad Pro和iPhone 7.在現有的圖像資源的配置文件必須被轉換爲顯示P3。對於Digital Color Meter應用程序,必須選擇P3配置文件才能獲得「Display P3」RGB值。看截圖。

How to pick the right RGB values for the Display P3 color space. enter image description here

+0

因此,我們不能只取素描顏色選擇器的顏色,以255分,並傳遞給'的UIColor(紅色:,綠色:,藍色:,阿爾法:)',對嗎?我看到的唯一解決方案是使用數字顏色選擇器與「顯示在sRGB的」 –

+1

顏色不是通過僅使用RGB值定義;您需要指定RGB值的顏色空間。 – Yohst

回答

3

TL; DR

iOS的使用擴展的sRGB,因爲它是默認的。

詳解

這可以很容易地通過在Xcode中調試程序進行驗證:

  • 將斷點在你的代碼的任何地方,
  • 時LLDB上來,類型po UIColor.red
  • 的上述命令將返回從iOS 11,Xcode 9.2開始的UIExtendedSRGBColorSpace 1 0 0 1

此顏色空間可以使用相同的sRGB值沒有顏色變化,但在同一時間允許RGB值去負以及大於1.0表示sRGB色彩空間外的色彩(即擴展的sRGB顏色空間)

2016年有一個不錯的WWDC視頻,Working with Wide Color,很好地解釋了這種現象(轉到8:35)。

所以,如果你在你的應用程序中使用sRGB顏色,你甚至應該很適合e-sRGB顯示器。當然,如果您需要sRGB色域外的其中一種特定顏色,則需要使用e-sRGB色彩空間。

5

我寫了一篇博客文章,解釋對此進行了詳細:

http://www.vsanthanam.com/writing/2017/7/6/colors-in-ios-ensuring-consistency-between-designs-interface-builder-and-uicolor

本質,而素描使用自定義的顏色選擇器,它假定sRGB色彩成分,Xcode的顏色挑不。如果與iOS 10.x鏈接,則使用sRGB色彩空間(擴展sRGB),但它也有另一種工廠方法colorWithDisplayP3Red:green:blue:alpha :它將採用顯示器P3顏色空間RGBA組件,但將它們內部存儲爲翻譯值並引用sRGB顏色空間。

與往常一樣,看看蘋果的的UIColor文檔瞭解更多信息:

https://developer.apple.com/documentation/uikit/uicolor?changes=latest_minor

有趣的是,AppKit的公司的UIColor對口,NSColor,支持具有更多可用的工廠方法方式更靈活(包括一個設計使用自定義色彩空間來模仿UIColor的+ colorWithRed:green:blue:alpha:behavior)。我不確定爲什麼UIColor更有限。

+0

令人驚歎的文檔和博客文章,謝謝! –

+0

很高興能幫到你! – vsanthanam510

相關問題