[英]How to find the CIFIlter categories at runtime?
I'm using this [CIFilter filterNamesInCategories:nil]
to get the list of available filters, but how can I get the list of categories ? 我正在使用此[CIFilter filterNamesInCategories:nil]
来获取可用过滤器的列表,但是如何获取类别列表? I could certainly enumerate through the filters list, and read the categories in each filter to build a set, but is there a better way to do this ? 我当然可以通过过滤器列表进行枚举,并读取每个过滤器中的类别来构建一个集合,但是有更好的方法吗?
Here is how I did it: 我是这样做的:
NSMutableSet * categories = [NSMutableSet set];
for (NSString* filterName in [CIFilter filterNamesInCategories:nil])
{
for (id value in [[[CIFilter filterWithName:filterName] attributes]
valueForKey:@"CIAttributeFilterCategories"]) {
[categories addObject:value];
}
}
NSLog(@"%@", categories);
Swift 4.2 version is here. Swift 4.2版本就在这里。
import CoreImage
var results = NSMutableSet()
let categories = CIFilter.filterNames(inCategory: nil)
for category in categories {
let attributes = CIFilter(name: category)?.attributes
let filterCategories = attributes!["CIAttributeFilterCategories"]
results.addObjects(from: filterCategories as! [Any])
}
print(results)
This is from the documentation: 这来自文档:
Filter Category Keys 过滤类别键
Categories of filters. 过滤器类别。
extern NSString *kCICategoryDistortionEffect;
extern NSString *kCICategoryGeometryAdjustment;
extern NSString *kCICategoryCompositeOperation;
extern NSString *kCICategoryHalftoneEffect;
extern NSString *kCICategoryColorAdjustment;
extern NSString *kCICategoryColorEffect;
extern NSString *kCICategoryTransition;
extern NSString *kCICategoryTileEffect;
extern NSString *kCICategoryGenerator;
extern NSString *kCICategoryReduction;
extern NSString *kCICategoryGradient;
extern NSString *kCICategoryStylize;
extern NSString *kCICategorySharpen;
extern NSString *kCICategoryBlur;
extern NSString *kCICategoryVideo;
extern NSString *kCICategoryStillImage;
extern NSString *kCICategoryInterlaced;
extern NSString *kCICategoryNonSquarePixels;
extern NSString *kCICategoryHighDynamicRange ;
extern NSString *kCICategoryBuiltIn;
As for getting them in runtime, I don't see any other option, other than enumerating them. 至于在运行时获取它们,我没有看到任何其他选项,除了枚举它们。 Here is the answer to that 这是答案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.