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

Check available filters in iOS: Core Image, via Swift

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

NSArray *Filters = [CIFilter filterNamesInCategory:kCICategoryBuiltIn]

Swift 如何完成这项检查?

也许这会让那些投票并要求关闭这个问题的人感到困惑。

让我换一种说法。

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

我本以为这应该很简单。但有两件事。

  1. 我不知道内置过滤器和插件过滤器有什么区别
  2. 不确定放置“nil”(如 Matt 所建议的那样)是指所有过滤器类别,还是不属于任何类别的过滤器

最简单形式的问题:

如何在 iOS 对 Core Image 的使用以及 Swift 中获取可用滤镜列表?

您被否决了,因为 the documentation answers your question directly:

Declaration

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

Parameters

categories

One or more of the filter category keys defined in Filter Category Keys. Pass nil to get all filters in all categories.

你说“不确定放置 "nil"(如 Matt 所建议的那样)意味着所有过滤器类别”,但它 确定的,因为文档告诉你这是。您没有仔细阅读文档,堆栈溢出的拥护者往往对此怀有敌意。

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

let allFilterNamesRegardlessOfCategory = CIFilter.filterNames(inCategories: nil)

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

更新

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