【发布时间】:2011-05-08 20:03:13
【问题描述】:
我正在使用 Opacity 生成我所有的 Quartz2D 图稿,我现在正在解决通过 KVC/KVO 更改颜色的问题。 Opacity 将其所有颜色变量定义为@dynamic,并将其自己的访问器实现为类定义的一部分。
我的问题是;如何通过键值传递新的 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 ...
颜色空间和创建代码是直接从 Opacity 的 CALayer 类生成器中提取的(我还没有那么高级),但是传递 'color' 作为值会导致 iPhone 模拟器崩溃,并且 XCode 给了我一个非常神秘的警告;
“不兼容的指针类型将'CGColorRef'(又名结构'CGColor *')发送到'id'类型的参数”。
如何包装 CGColorRef 以通过 KVC 将其传递给接收器? 提前致谢。
【问题讨论】:
标签: iphone quartz-graphics opacity key-value-observing key-value-coding