簡體   English   中英

如何在運行時找到CIFIlter類別?

[英]How to find the CIFIlter categories at runtime?

我正在使用此[CIFilter filterNamesInCategories:nil]來獲取可用過濾器的列表,但是如何獲取類別列表? 我當然可以通過過濾器列表進行枚舉,並讀取每個過濾器中的類別來構建一個集合,但是有更好的方法嗎?

我是這樣做的:

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版本就在這里。

  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)

來自文檔:

過濾類別鍵

過濾器類別。

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;

至於在運行時獲取它們,我沒有看到任何其他選項,除了枚舉它們。 這是答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM