我目前正試圖圍繞iOS的CGColorSpace顏色管理API的當前狀態。在iOS 8.1 SDK之前(據我所知),在CGColorSpace.h
中的許多函數&常量被標記爲__IPHONE_NA
。但是,根據核心圖形的iOS 8.1 API Diffs,許多先前爲__IPHONE_NA
的函數&已更新爲__IPHONE_2_0
。那麼我們該怎麼解釋呢?iOS上的CGColorSpace API和顏色管理狀態?
我不認爲蘋果公司爲舊iOS版本追溯支持這些功能,而只是將這些功能的可見性從私有變爲公共。嘗試在不同的iOS版本&設備上使用某些功能時出現問題。例如:
CGColorSpaceRef sRgb = CGColorSpaceCreateWithName(kCGColorSpaceSRGB); // kCGColorSpaceSRGB is labeled __IPHONE_8_0
CFDataRef profData = CGColorSpaceCopyICCProfile(...);
- 在iPad贈送(原始)運行iOS 8.2:
sRgb
&profData
將是NULL。 - 在運行iOS 8.3的iPad 3上:
sRgb
&profData
將爲NULL。 - 在運行iOS 9.2.1的iPhone 6 Plus上:
sRgb
將包含非NULLCGColorSpaceRef
,profData
將包含非NULLCFDataRef
緩衝區。 - 在運行iOS 9.2.1的iPad Mini(原)上:
sRgb
將包含非NULLCGColorSpaceRef
,profData
將包含非NULLCFDataRef
緩衝區。
因此,至少對於iOS 8來說,這些函數似乎並沒有完全實現。對於iOS 9,似乎開始工作。
是否有任何文檔或資源描述這些API在iOS 8和iOS 9中如何更改?當CGColorSpaceCreateWithName(kCGColorSpaceSRGB)
返回NULL時應該使用什麼顏色空間?在這種情況下,似乎CGColorSpaceCreateDeviceRGB()
可能是唯一的選擇。
經過一些測試後,我發現可以從CGImageRef
獲取嵌入的顏色配置文件,並使用該配置文件將顏色轉換應用到另一個顏色空間,只要您自己進行顏色轉換即可。 Core Graphics API仍然不支持在顏色空間之間轉換圖像,但是如果您有自己的顏色管理功能,現在可以在iOS上自己做 - 這是以前不可能的。
我只是想知道什麼是和不會工作。我嘗試瞭解發行說明,並尋找描述從iOS 7改爲8和8到9的技術說明,但我一直無法找到任何描述CGColorSpace API更改的內容。有誰知道是否有這樣的文件?
提醒:如果您發現之一以下答案已解決/回答了您的問題,請將其標記爲已接受的答案! –