2017-01-19 1 views
1

ios 10.2에서 Snapchat과 같은 카메라를 만들려고하는데 문제는 iPhone에서 앱을 실행할 때입니다. UIView가 비어있는 것으로 표시됩니다. 이것은 내 코드입니다. 카메라 사용법 설명카메라 ios 10.2, swift 3

무슨 일

- 내의 Info.plist에서

import UIKit 
import AVFoundation 

class TakeSelfieViewController: UIViewController { 

@IBOutlet var cameraView: UIView! 

var captureSession : AVCaptureSession? 
var stillImageOutput: AVCaptureStillImageOutput? 
var previewLayer : AVCaptureVideoPreviewLayer? 

override func viewDidLoad() { 
    super.viewDidLoad() 

    captureSession = AVCaptureSession() 
    captureSession?.sessionPreset = AVCaptureSessionPreset1920x1080 
    let deviceDiscoverySession = AVCaptureDeviceDiscoverySession(deviceTypes: [AVCaptureDeviceType.builtInDuoCamera, AVCaptureDeviceType.builtInTelephotoCamera,AVCaptureDeviceType.builtInWideAngleCamera], mediaType: AVMediaTypeVideo, position: AVCaptureDevicePosition.front) 
    for device in (deviceDiscoverySession?.devices)! { 
     if device.position == AVCaptureDevicePosition.front{ 
      do { 
       let input = try AVCaptureDeviceInput(device: device) 
       if (captureSession?.canAddInput(input))!{ 
        captureSession?.addInput(input) 
        stillImageOutput = AVCaptureStillImageOutput() 
        stillImageOutput?.outputSettings = [AVVideoCodecKey:AVVideoCodecJPEG] 
        if (captureSession?.canAddOutput(stillImageOutput))! { 
         captureSession?.addOutput(stillImageOutput) 
         previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) 
         previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect 
         previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.portrait 
         cameraView.layer.addSublayer(previewLayer!) 
         captureSession?.startRunning() 
        } 
       } 
      } catch{ 
       print("Error Occured when trying get camera") 
      } 
     } 
    } 

} 

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

override var prefersStatusBarHidden: Bool { 

    return true 

} 

나는 개인 정보 보호를 추가 한?

+0

설명을 올바르게 추가 하시겠습니까? – BilalReffas

+0

이것을보십시오 http://stackoverflow.com/questions/37869963/how-to-use-avcapturephotooutput/38171414#38171414 – BilalReffas

+0

카메라 관리자이며 카메라 세션을 처리 할 수있는 간단한 클래스가 있습니다. 카메라 미리보기 플레이어를 https://github.com/maryamfekri/MFCameraManager에 표시하고 싶습니다. –

답변

0

ios 10 이상 버전에서 swift3 코드를 사용하면 사진 촬영이 매우 쉽습니다. 먼저 살펴 보겠습니다. 먼저 이미지 선택기를 제시해야합니다. 10 번째 이후에는 라이브러리의 카메라 및 사진에 액세스 할 수있는 권한을 얻어야합니다.

당신은 당신이 얻을 수있는

  import UIKit 

     class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate { 

의 Info.plist 파일이 2.Privacy - 카메라 사용 액세스 descriptin 이러한 것들을 1.Privacy - 사진 라이브러리 사용을 액세스 클래스에이 delgates을 추가 할 수

 func cameraAction(_ sender: AnyObject) { 
       if UIImagePickerController 
     .isSourceTypeAvailable(UIImagePickerControllerSourceType.camera){ 
     let imagePicker = UIImagePickerController() 
     imagePicker.delegate=self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.camera 
     imagePicker.allowsEditing = true 
     self .present(imagePicker, animated: true, completion: nil) 
    } 

    } 

여기 UIImageView를 벨로우즈 코드로 가져올 수 있습니다. imageView 갤러리 또는 카메라에서 선택한 이미지를 보여주는 데 사용됩니다.

(210)

당신은 당신은 previewLayer의 프레임을 설정해야

 func photosFromLibrary(_ sender: AnyObject) { 
    if UIImagePickerController .isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary){ 
     let imagePicker = UIImagePickerController() 
     imagePicker.delegate=self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary 
     imagePicker.allowsEditing = true 
     self .present(imagePicker, animated: true, completion: nil) 
    } 

} 
0

모바일 갤러리에 librarys에서 사진을 얻을 수 있습니다.

previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) 
previewLayer?.frame = cameraView.frame // this line is new 
previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect 
관련 문제