2017-01-19 3 views
1

ich versuche, eine Kamera wie Snapchat mit schnellen 3 in ios 10.2 erstellen, aber das Problem ist, wenn ich die app in meinem iPhone laufen. Die UIView erscheint leer. Das ist mein Code. Kamera Verwendung BeschreibungKamera ios 10.2, schnelle 3

Was geschieht -

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 

} 

In meinem Info.plist habe ich die Datenschutz hinzugefügt?

+0

Füge die Beschreibung korrekt hinzu? – BilalReffas

+0

Schauen Sie sich http://stackoverflow.com/questions/37869963/how-to-use-avcapturephotooutput/38171414#38171414 – BilalReffas

+0

gibt es eine einfache Klasse, die ein Kamera-Manager ist und Ihre Kamera-Sitzung behandeln können, müssen Sie die Ansicht, in der der Vorschaubildschirm der Kamera angezeigt werden soll: https://github.com/maryamfekri/MFCameraManager –

Antwort

0

Das Fotografieren ist sehr einfach mit swift3 code in ios 10 und späteren Versionen Schauen Sie hier Zuerst müssen Sie die Bildauswahl präsentieren. Ab ios 10 sollten Sie Zugriff auf die Kamera und Fotos aus der Bibliothek erhalten.

können Sie hinzugefügt, um diese delgates Ihrer Klasse

  import UIKit 

     class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate { 

Info.plist Datei, die Sie bekommen können diese Dinge 1.Privacy-Foto-Bibliothek Nutzung descriptin 2.Privacy-Kamera Nutzung Zugriff greift

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

    } 

Hier können Sie UIImageView in Balg Code imageView verwenden es wird verwendet, um das Bild, was Ihr ausgewähltes Bild aus der Galerie oder von der Kamera

zeigen 210

können Sie Fotos von librarys in Ihrem mobilen Galerie erhalten

 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

Sie müssen den Rahmen des previewLayer einzustellen.

previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) 
previewLayer?.frame = cameraView.frame // this line is new 
previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect 
Verwandte Themen