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")
}
}
'UIImageWriteToSavedPhotosAlbum '에 대한 호출이 실제로 사진 앨범에 이미지를 저장하고 있지 않다는 소리입니까? 'UIImageWriteToSavedPhotosAlbum'을위한 문서를 읽고 당신이 무슨 일이 일어나고 있는지 알 수 있도록'nil'을 넘겨주는 여분의 매개 변수를 사용하십시오. – rmaddy
네 맞습니다. 여분의 경계가 무엇을 의미합니까? –
그는'UIImageWriteToSavedPhotosAlbum'의 마지막 두 매개 변수를 의미합니다.이 매개 변수는'nil'으로 설정합니다. 문서 https://developer.apple.com/reference/uikit/1619125-uiimagewritetosavedphotosalbum에서 살펴볼 수 있습니다. 마지막 세 매개 변수는 선택 사항입니다. 하지만 이건 내가 생각하는 문제의 원인이되어서는 안된다. – ronatory