我使用Opacity生成所有Quartz2D圖稿,現在我正在解決通過KVC/KVO更改顏色的問題。不透明度將其所有顏色變量定義爲@dynamic,並將其自己的訪問器作爲類定義的一部分。傳遞CGColorRef作爲KVC/KVO中的值
我的問題是;我如何通過鍵值傳遞一個新的CGColorRef值?
到目前爲止(作爲測試平臺),我走了這麼遠:
// Testbed ... Testbed ... Testbed ... Testbed ... Testbed ... Testbed ... Testbed ...
CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
CGFloat components[4] = {1.0f, 1.0f, 1.0f, 1.0f};
CGColorRef color = CGColorCreate(space, components);
[myCALayerReceiverObject setValue: color forKey: @"numColour"];
// Testbed ... Testbed ... Testbed ... Testbed ... Testbed ... Testbed ... Testbed ...
的色彩空間和創建代碼是直接從透明度的CALayer的類生成解除(我不是說先進又),但通過'顏色'作爲值導致iPhone模擬器崩潰和XCode給我一個非常神祕的警告;
「將'CGColorRef'(又名struct'CGColor *')發送到類型爲'id'的參數的不兼容指針類型」。
如何包裝CGColorRef以將其通過KVC傳遞給接收方? 在此先感謝。
我剛剛注意到,'CGColorCreateGenericRGB'對於iOS無效,所以我的測試代碼只適用於OS X.顏色來自哪裏並不重要,因爲它不是問題。 – ughoavgfhw 2011-05-08 22:12:45
謝謝你這個ughoavgfhw。自發布這個問題以來,我一直與Opacity進行溝通,並且我的代碼失敗的原因歸結於創建CALayer子類的Opacity邏輯中的一個小缺失。事實上,我原本試圖做的是正確的,不透明度開發人員將在未來發布的產品中解決這個漏洞。謝謝你的幫助。 – VectorVictor 2011-05-09 12:52:58
但CGColor不是標量或結構。它是核心基礎對象 – user102008 2012-05-23 19:08:52