2016-09-14 5 views
0

Мне нужно исправить захват экрана по горизонтали. Но этот мой код не может исправить захват экрана размера. Следуйте по коду>previewLayer.frame = CGRectMake (20, 40, 500, 100).
см. Ниже на этом изображении изображение не соответствует CGRectMake (20, 40, 500, 100).Я не могу исправить размер AVcapture с помощью этого кода

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) 
      } 
     } 
    } 

} 

ответ

0

Установите кадр предварительного просмотра слоя в viewDidAppear или в viewWillLayoutSubview

+0

Я стараюсь это, но получил тот же результат :( –