2015-09-14 20 views
8

UIImageView'ın için AVFoundation dan Resmi atarken Ancak, düğmesine basıldığında, özel kamera görüntüsü (UIView), UIImageView'a atamak yerine ekranda kilitlenir ve yukarı gider. Bu, özel kamera görünümü başlangıçta yüklendiğinde, ardından özel kamerayı yüklediğimde olur tekrar görüntüle, görüntüyü UIImageView'a atayacaktır.Subview, ben özel bir <strong>AVFoundation</strong> kamera oluşturulan ve <strong>@IBDesignable</strong> ile subview başka görünüme yüklediğiniz

Yakalama Görüntü yöntemi:

@IBAction func captureImage(sender: AnyObject) { 
     if let stillOutput = self.captureImageOutput { 
      // we do this on another thread so that we don't hang the UI 
      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 
       //find the video connection 
       var videoConnection : AVCaptureConnection? 
       for connecton in stillOutput.connections { 
        //find a matching input port 
        for port in connecton.inputPorts!{ 
         if port.mediaType == AVMediaTypeVideo { 
          videoConnection = connecton as? AVCaptureConnection 
          break //for port 
         } 
        } 

        if videoConnection != nil { 
         break// for connections 
        } 
       } 
       if videoConnection != nil { 
        stillOutput.captureStillImageAsynchronouslyFromConnection(videoConnection){ 
         (imageSampleBuffer : CMSampleBuffer!, _) in 

         let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(imageSampleBuffer) 
         let pickedImage: UIImage = UIImage(data: imageData, scale: 1.0)! 

         dispatch_async(dispatch_get_main_queue(), { 
          self.capturePhoto.image = pickedImage 
         }) 
        } 
       } 
      } 
     } 

    } 

Ben de UIImageView yılında dispatch_sync ve hiçbir şey yükünü denedi, ancak ekran çökmesine yoktur.

dispatch_sync(dispatch_get_main_queue(), { 
     self.capturePhoto.image = pickedImage 
}) 
+0

Ne tür bir çökme alıyorsunuz? kaynak kodunuzun hangi satırının kazaya neden olduğunu gösteren bir backtrace var mı? –

+0

Herhangi bir hata alamıyorum. @MichaelDautermann – Xrait

+0

UI sadece asmak – Xrait

cevap

-1

Ben sadece test edilmiş ve bu benim için çalıştı (Swift 2.0) görüntü başarıyla alınır

override func viewDidLoad() { 
    super.viewDidLoad() 
    imageView = UIImageView(frame: self.view.frame) 
    self.view.addSubview(imageView) 
} 

func takeImage() { 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 

     guard let videoConnection = self.stillImageOutput.connectionWithMediaType(AVMediaTypeVideo) else { return } 
     guard videoConnection.enabled else { return } 

     self.stillImageOutput.captureStillImageAsynchronouslyFromConnection(videoConnection) { (buffer: CMSampleBuffer!, error: NSError!) -> Void in 

      let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(buffer) 
      let image: UIImage = UIImage(data: imageData, scale: 1.0)! 

      dispatch_async(dispatch_get_main_queue(), { 
       self.imageView.image = image 
       print("picture taken") 
      }) 
     } 
    } 

} 

ve viewController eklendi. Bu sizin için işe yaramazsa, belki de kurulumunuzda daha fazlasını açıklayabilirsiniz, böylece hata/çökmeyi deneyebilir ve yeniden üretebilirim.

İlgili konular