2016-10-19 5 views
1

이 코드에는 제목이 중첩 된 카메라가있는 특수 카메라가 있습니다. 따라서 사진이 사진 갤러리에 저장되면 제목이 사진에 있습니다. 카메라는 훌륭하게 작동하지만 사진이 저장되지 않습니다. 사진을 사진 갤러리에 저장하는 방법을 알아야합니다. 나는 사진 갤러리와 카메라에 대한 액세스를 허용하기 위해 plist를 변경했습니다. 이 솔루션을 않을 수도 있지만 어쩌면 (질문의 의견에 rmaddy에서 힌트)하면 이미지가 저장되지 않습니다 더 이유를 취할 것스위프트 3; 사진이 사진 갤러리에 저장되지 않음

import Foundation 
    import UIKit 



class ViewController: UIViewController, OverlayViewControllerDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

var picker = UIImagePickerController() 

@IBAction func letsDoThis(_ sender: AnyObject) { 
      if UIImagePickerController.availableCaptureModes(for: .rear) != nil { 
     picker = UIImagePickerController() 
     picker.allowsEditing = false 
     picker.sourceType = .camera 
     picker.cameraCaptureMode = .photo 
     picker.showsCameraControls = false 
     let overlayViewController = OverlayViewController(nibName:"OverlayView", bundle: nil) 
     let overlayView: OverlayView = overlayViewController.view as! OverlayView 
     overlayView.frame = self.picker.view.frame 

     overlayView.delegate = self 

     picker.modalPresentationStyle = .fullScreen 
     present(picker, animated: true, completion: { 


      self.picker.cameraOverlayView = overlayView 
     }) 
    } else { 
     let alert = UIAlertController(title: "No Camera", message: "That's weird. No camera.", preferredStyle: .alert) 
     let okay = UIAlertAction(title: "Alright Then.", style: .default, handler: nil) 
     alert.addAction(okay) 
     present(alert, animated: true, completion: nil) 
    } 
} 



override func viewDidLoad() { 
    super.viewDidLoad() 
      picker.delegate = self 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    picker.dismiss(animated: true, completion: nil) 
} 

//MARK: Image Picker Controller Delegates 

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage 
    UIImageWriteToSavedPhotosAlbum(chosenImage, self,nil, nil) 

     dismiss(animated: true, completion: nil) 
} 

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
    dismiss(animated: true, completion: nil) 
    print("Canceled!!") 
} 

func didCancel(overlayView: OverlayView) { 
    dismiss(animated: true, completion: nil) 
    print("dismissed!!") 
} 
func didShoot(overlayView: OverlayView) { 
    picker.takePicture() 
    overlayView.cameraLabel.text = "Shot Photo" 
    print("Shot Photo") 
} 
} 
+0

'UIImageWriteToSavedPhotosAlbum '에 대한 호출이 실제로 사진 앨범에 이미지를 저장하고 있지 않다는 소리입니까? 'UIImageWriteToSavedPhotosAlbum'을위한 문서를 읽고 당신이 무슨 일이 일어나고 있는지 알 수 있도록'nil'을 넘겨주는 여분의 매개 변수를 사용하십시오. – rmaddy

+0

네 맞습니다. 여분의 경계가 무엇을 의미합니까? –

+0

그는'UIImageWriteToSavedPhotosAlbum'의 마지막 두 매개 변수를 의미합니다.이 매개 변수는'nil'으로 설정합니다. 문서 https://developer.apple.com/reference/uikit/1619125-uiimagewritetosavedphotosalbum에서 살펴볼 수 있습니다. 마지막 세 매개 변수는 선택 사항입니다. 하지만 이건 내가 생각하는 문제의 원인이되어서는 안된다. – ronatory

답변

1

. 이

UIImageWriteToSavedPhotosAlbum(chosenImage, self, #selector(self.image(_:didFinishSavingWithError:contextInfo:)), nil) 

func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeMutableRawPointer) { 
    guard error == nil else { 
    print("Error saving image: \(error)") 
    return 
    }  
    print("Image saved successfully") 
} 

변경 UIImageWriteToSavedPhotosAlbum :

completionSelector 방법을 추가 저장하는 동안 오류가있는 경우 (또한 docs 참조) 그 같은 completionTargetcompletionSelector 매개 변수를 사용하여 확인하려면

관련 문제