检查iOS中的可用过滤器:Core Image,通过Swift

时间:2017-02-05 16:32:13

标签: ios swift core-image

在iOS中,可以使用Objective-C检查可用的过滤器,显然是这样的:

NSArray *Filters = [CIFilter filterNamesInCategory:kCICategoryBuiltIn]

如何使用Swift完成此检查?

对于那些投票并要求关闭这个问题的人来说,这可能会让人感到困惑。

让我用另一种方式说出来。

我想要一个iOS上所有可用过滤器的列表,我想用Swift发现该列表。

这个应该足够简单的东西,我已经想过了。但是有两件事。

  1. 我不知道内置和插件过滤器之间的区别
  2. 不确定放置" nil" (根据Matt的建议)表示所有过滤器类别或不属于任何类别的过滤器
  3. 问题,最简单的形式:

    如何使用Swift获取iOS使用Core Image的可用过滤器列表?

1 个答案:

答案 0 :(得分:2)

由于the documentation answers your question directly

,您正在被投票
  

声明

class func filterNames(inCategories categories: [String]?) -> [String]
     

参数

     

categories

     
    

过滤器类别键中定义的一个或多个过滤器类别键。通过nil获取所有类别的所有过滤器。

  

你说'不确定放置" nil" (正如Matt所建议的那样)意味着所有过滤器类别',但它 是确定的,因为文档告诉你它。你没有仔细阅读文档,并且堆栈溢出的居民往往对此持敌视态度。

换句话说,如果您想要所有类别中的所有过滤器:

let allFilterNamesRegardlessOfCategory = CIFilter.filterNames(inCategories: nil)

请注意,有一天,这可能会在iOS上返回与CIFilter.filterNames(inCategories: kCICategoryBuiltIn)不同的结果,但今天却不能,因为今天only macOS supports plugin filters

更新

最后一段不准确。从iOS 8开始,应用程序就能够创建和使用自己的CIFilter子类。除了macOS之外,仍然不支持将自定义CIFilter直接提供给其他应用。