2016-12-20 7 views

ответ

0
class Scanner: NSObject { 
//MARK: - Private Properties 
private var captureSession: AVCaptureSession? 
private(set) var videoLayer: AVCaptureVideoPreviewLayer? 

//MARK: - Initialization 
override init() { 
    super.init() 

    captureSession = AVCaptureSession() 
    if let captureSession = captureSession { 
     let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) 
     do { 
      let input = try AVCaptureDeviceInput(device: device) 
      captureSession.addInput(input) 

      let output = AVCaptureMetadataOutput() 
      captureSession.addOutput(output) 
     } catch { 
      print(error) 
      abort() 
     } 

     videoLayer = AVCaptureVideoPreviewLayer(session: self.captureSession) 
     if let videoLayer = videoLayer { 
      videoLayer.videoGravity = AVLayerVideoGravityResizeAspectFill 
     } 
    } 
} 

В вашей UIViewController вы установите его так:

let scanner = Scanner() 
if let videoLayer = scanner.videoLayer { 
    videoLayer.frame = self.view.bounds 
    self.view.layer.addSublayer(videoLayer) 
    scanner.startSession() 
} 
+0

Здравствуйте, спасибо за ваш ответ, но я получил ошибку: Значение типа «Сканер» не имеет члена «startSession» – Denis

+0

Вставить 'captureSession.startRunning()' после установки 'captureSession'. –

+0

У меня черный экран. http://www.imageup.ru/img76/2635267/img_0313.jpg.html – Denis

2

Один из способов сделать это является использование UIImagePickerController, который, вероятно, самый простой способ, чтобы сделать снимок с камера. Этот класс имеет свойство showsCameraControls, которое вы можете установить на NO, если вы не хотите обычного набора элементов управления. Если вы это сделаете, вам нужно будет установить свойство cameraOverlayView на представление, которое вы предоставляете. Обычно это представление будет содержать ваш собственный набор элементов управления камерой, но вместо этого вы можете перейти в пустой вид. Вы хотите настроить представление так, чтобы оно реагировало на жесты пользователя, чтобы они могли снимать фотографию (возможно, с помощью крана) или снимать камеру без фотосъемки (для этого вы можете использовать салфетки) ,