2014-12-28 14 views
6

Ho faticato a trovare un modo per lanciare un UIImagePickerController con una vista dal vivo quadrata, e farlo prendere a un'immagine quadrata. Il codice che ho in questo momento per lanciare la fotocamera è sottoForzare un UIImagePickerController per aprire una telecamera quadrata con Swift

func takePicture() { 
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary){ 
     println("Button capture") 
     var imag = UIImagePickerController() 
     imag.delegate = self 
     imag.sourceType = UIImagePickerControllerSourceType.Camera 
     //imag.mediaTypes = [kUTTypeImage]; 
     imag.allowsEditing = false 
     self.presentViewController(imag, animated: true, completion: nil) 
    } 
} 

func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!) { 
    let selectedImage : UIImage = image 
    //var tempImage:UIImage = editingInfo[UIImagePickerControllerOriginalImage] as UIImage 

    var newImage: UIImage = resizeImageWithImage(selectedImage, size: CGSize(width: 320, height: 568)) 

    datImage.image=newImage 

    let paths: NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) 
    let documentsDir: NSString = paths.objectAtIndex(0) as NSString 

    var dateFormat = NSDateFormatter() 
    dateFormat.dateFormat = "yyyy-MM-dd-HH-mm-ss" 
    let now:NSDate = NSDate(timeIntervalSinceNow: 0) 
    let theDate = dateFormat.stringFromDate(now) 

    //Make Photo URL 

    self.photoURL = NSString(format: "/%@.png", theDate) 

    //save resized image 

    let pathToFullPhoto: NSString = documentsDir.stringByAppendingString(self.photoURL) 

    let pngFull: NSData = UIImagePNGRepresentation(newImage) 
    pngFull.writeToFile(pathToFullPhoto, atomically: true) 



    self.dismissViewControllerAnimated(true, completion: nil) 
} 

innescato con: self.takePicture()

Qualsiasi aiuto sarebbe apprezzato.

+0

hai mai ricevuto una risposta a questa domanda? Ho la macchina da aprire con poche righe di codice (che è grandiosa) ma voglio solo che l'opzione square sia disponibile – RubberDucky4444

risposta

0

Hai esaminato la proprietà cameraOverlayView? Sembra che sia quello che stai cercando.

Link to docs

È quindi necessario ritagliare l'immagine una volta che si riceve, poiché la vista di sovrapposizione non sarà effettivamente fare il ritaglio. Per ritagliare, è sufficiente prendere l'immagine e disegnarla in un rettangolo più piccolo, in base alla dimensione della "apertura" nel tuo cameraOverlayView.

Problemi correlati