はじめに
iOSバーコードリーダーの読込範囲指定をしたかったが、なかなか上手くいかず、
解決するまでに時間がかかったため、読込範囲指定方法についての記事を投稿します。
またソースコードは最低限しか載せていません。
基本的なバーコード読み取り方法に関しては、他の記事を参考にしてみてください。
完成図
作成中のアプリにはなりますが、
バーコード読み取り後、楽天APIを叩き、楽天から書籍情報を取得し、表示させています。
バーコードリーダーの読込範囲指定方法
1. 読込範囲を指定するためのViewを作成
下記画像の通り、captureViewを作成します。
2. バーコードの検出範囲の指定
下記のような形で、バーコードの検出範囲を指定します。
// 背面カメラの映像を画面に表示するためのレイヤーを生成
let previewLayer = AVCaptureVideoPreviewLayer(session: self.session)
previewLayer.frame = self.captureView.bounds
previewLayer.videoGravity = .resizeAspectFill
self.captureView.layer.addSublayer(previewLayer)
// 検出エリアの設定
metadataOutput.rectOfInterest = previewLayer.metadataOutputRectConverted(fromLayerRect: captureView.bounds)
下記のソースコード部分が重要な部分になります。
検出エリアのy軸がズレる事象は、下記のソースコードのような記載にすることで直るかと思います。
previewLayer.metadataOutputRectConverted(fromLayerRect: captureView.bounds)
以上。