从Apple的Core Animation Programming Guide,列出4:
...
// create the filter and set its default values
CIFilter *filter = [CIFilter filterWithName:@"CIBloom"];
[filter setDefaults];
[filter setValue:[NSNumber numberWithFloat:5.0] forKey:@"inputRadius"];
// name the filter so we can use the keypath to animate the inputIntensity
// attribute of the filter
[filter setName:@"pulseFilter"];
...
在[filter setName ...”行上,我得到一个“ CIFilter没有可见的@interface声明选择器'setName:'。
我看到过滤器是使用filterWithName初始化器创建的,因此我怀疑其名称是只读的。但是,为什么在苹果代码以及我发现的许多其他示例中都出现了这个示例?
最佳答案
可写的name
属性通过仅在Mac上存在的Core Animation additions类别添加。请参见CIFilter Animatable Properties subsection:
Core Animation将以下动画属性添加到Core
图片的CIFilter类。有关更多信息,请参见CIFilter核心动画添加。
信息。这些属性仅在OS X上可用。
名称
已启用
iOS上的CIFilter确实具有-name
方法,但这仅用于对过滤器名称的只读访问,并且没有匹配的设置器。
上面链接到的《 Core Animation编程指南》中的该部分是从该指南的原始Mac版本复制并粘贴的,应进行更改,因为它并不完全适用于iOS。