2

所以.. CALayerKVC“扩展”处理所有怪人的......比如......

+ (id) defaultValueForKey: (NSString*)key    {
   return [key isEqualToString:@"borderColor"] 
        ? (id)cgPINK 
        : [super defaultValueForKey:key];    } 

如果您不提供值, Apple 的文档会提到如何最好地对结构进行编码,当它们引用默认值时......

例如,如果 key 的值是 CGSize 结构,则该方法返回一个包含 (0.0,0.0) 的大小结构,该结构包含在 NSValue 对象中。

但是,我不知道如何提供正常的、臭的、原始的,即CGFloat

我试过@VAL-typeNSNumber编码,

return ![key isEqualToString:@"lineWidth"] ?: @3;

并且没有可行NSValue的方法,甚至拼命尝试将它们投向id

return ![key isEqualToString:@"zPosition"] ?: (id)262453;// lol

这是怎么回事?由于 CALayer 的奇数性质,这只是“哦,你不能”的情况吗?我尴尬地忽略了一个明显的解决方案?或者它只是一个阴暗的 API - 拒绝记录它自己的缺点?

4

1 回答 1

0

您应该能够返回一个 NSNumber。

我还没有尝试过使用 Objective C 文字。暂时跳过它以限制并发症。只需使用这样的代码:

return [NSNumber numberWithFloat: 3.0];

或 numberWithBool,或 numberWithInt,或任何合适的。

于 2012-11-18T15:12:31.007 回答