使用AVFoundation检测图像中的特征(例如面部或条形码)时,必须调用以下行:
AVCaptureMetadataOutput *metadataOutput = ...;
metadataOutput.metadataObjectTypes = metadataOutput.availableMetadataObjectTypes;
检查availableMetadataObjectTypes会显示以下字符串:
face,
"org.gs1.UPC-E",
"org.iso.Code39",
"org.iso.Code39Mod43",
"org.gs1.EAN-13",
"org.gs1.EAN-8",
"com.intermec.Code93",
"org.iso.Code128",
"org.iso.PDF417",
"org.iso.QRCode",
"org.iso.Aztec"
如果我正在编写条形码扫描应用程序,我不希望框架正在寻找面孔,因此我想传递特定的条形码来寻找,而不是传递metadataOutput.availableMetadataObjectTypes
。而不是使用这些硬编码的字符串,我希望它们被定义为某处的常量。
它们是否存在于框架中的任何位置,或者我是否必须使用硬编码的字符串?
答案 0 :(得分:4)
各种条形码类型都有常量,只有AVMetadataMachineReadableCodeObject
类(full list here)。
所以你可以这样做:
metadataOutput.metadataObjectType = @[AVMetadataObjectTypeQRCode, AVMetadataObjectTypeEAN13Code];