Dieser Code verfügt über eine spezielle Kamera mit einer Kamera, in die ein Titel eingebettet ist. Wenn das Foto in der Fotogalerie gespeichert wird, befindet sich der Titel auf dem Foto. Die Kamera funktioniert gut, aber das Foto wird nicht gespeichert. Ich muss nur herausfinden, wie ich die Fotos in der Fotogalerie speichern kann. Ich habe die PLIST geändert, um den Zugriff auf Fotogalerie und Kamera zu ermöglichen.Swift 3; Foto wird nicht in Fotogalerie gespeichert
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")
}
}
Klingt so, als würden Sie sagen, dass der Aufruf von 'UIImageWriteToSavedPhotosAlbum' das Bild nicht wirklich im Fotoalbum speichert, richtig? Lesen Sie die Dokumentation für 'UIImageWriteToSavedPhotosAlbum' und nutzen Sie die zusätzlichen Parameter, an denen Sie' nil' übergeben, damit Sie herausfinden können, was passiert. – rmaddy
Ja das ist richtig. Was meinst du mit zusätzlichen Perimetern? –
Er meint die beiden letzten Parameter von 'UIImageWriteToSavedPhotosAlbum', die Sie auf' nil' setzen. Sie können hier in den Dokumenten https://developer.apple.com/reference/uikit/1619125-uiimagewritetosavedphotosalbum nachschauen. Die letzten drei Parameter sind optional. Aber das sollte nicht die Ursache für Ihr Problem sein, denke ich – ronatory