gpt4 book ai didi

ios - 我无法使用此代码修复 AVcapture 的大小

转载 作者:行者123 更新时间:2023-11-30 13:05:04 24 4
gpt4 key购买 nike

我需要修复水平屏幕捕获,但是我的代码无法修复屏幕捕获的大小,请遵循代码 > previewLayer.frame = CGRectMake(20, 40, 500, 100)
请参阅下面的屏幕图片与 CGRectMake(20, 40, 500, 100) 不匹配。

This is small size not match follow code(CGRectMake(20, 40, 500, 100))

请提供我的想法或自定义尺寸的示例代码,谢谢。

这是一些代码

import UIKit
import AVFoundation

protocol BarcodeDelegate {
func barcodeReaded(barcode: String)
}


class barcodeCapViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate {

var delegate: BarcodeDelegate?
var captureSession: AVCaptureSession!
var code: String?


override func viewDidLoad() {
super.viewDidLoad()

self.captureSession = AVCaptureSession();

let videoCaptureDevice: AVCaptureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)

do {

let videoInput = try AVCaptureDeviceInput(device: videoCaptureDevice)

if self.captureSession.canAddInput(videoInput) {
self.captureSession.addInput(videoInput)
} else {
print("Could not add video input")
}

let metadataOutput = AVCaptureMetadataOutput()
if self.captureSession.canAddOutput(metadataOutput) {
self.captureSession.addOutput(metadataOutput)

metadataOutput.setMetadataObjectsDelegate(self, queue: dispatch_get_main_queue())
metadataOutput.metadataObjectTypes = [AVMetadataObjectTypeQRCode, AVMetadataObjectTypeEAN13Code]
} else {
print("Could not add metadata output")
}

let previewLayer = AVCaptureVideoPreviewLayer(session: self.captureSession)
previewLayer.frame = CGRectMake(20, 40, 500, 100)
self.view.layer .addSublayer(previewLayer)
self.captureSession.startRunning()
} catch let error as NSError {
print("Error while creating vide input device: \(error.localizedDescription)")
}

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}


func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) {
for metadata in metadataObjects {
let readableObject = metadata as! AVMetadataMachineReadableCodeObject
let code = readableObject.stringValue
if !code.isEmpty {
self.captureSession.stopRunning()
self.dismissViewControllerAnimated(true, completion: nil)
self.delegate?.barcodeReaded(code)
}
}
}

}

最佳答案

在viewDidAppear或者viewWillLayoutSubview中设置预览图层框架

关于ios - 我无法使用此代码修复 AVcapture 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39490880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com