2013-04-04 17 views
0

我正在使用此[CIFilter filterNamesInCategories:nil]來獲取可用過濾器的列表,但是如何獲取類別列表?我當然可以枚舉過濾器列表,並閱讀每個過濾器中的類別來構建一個集合,但是有沒有更好的方法來實現這一點?如何在運行時查找CIFIlter類別?

回答

0

這是我如何做的:

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); 
0

這是from the documentation:

過濾類別鍵

的過濾器

分類。

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; 

至於讓他們在運行時,我沒有看到任何其他的選擇,比他們列舉其他。 Here is the answer to that

+0

這肯定的作品,但是這是在編譯的時候。 – alecail 2013-04-04 08:19:00

+0

@Antoine我編輯了我的答案,我知道並且看到的唯一解決方案是枚舉。但是如果你有它們在編譯它們,你當然可以創建它們的數組並在運行時使用它們...... – Lefteris 2013-04-04 08:21:13

+0

我希望我的代碼至少儘可能地成爲平臺獨立的平臺。編譯時我不一定有它們。 – alecail 2013-04-04 08:24:12