我是Swift初学者,刚刚在我的应用程序中完成了我的照相机功能.我现在遇到的问题是,当我从相机拍摄照片时,它不会保存到我的iPhone上的照片库中.一切都很完美,我可以拍照,但是当我查看照片时,似乎没有保存.我检查了类似的问题,但我没有找到正确的答案,我发现他们是添加按钮直接访问照片库的人,但我不需要这样的按钮.唯一的功能,我需要拍照,当用户点击选择照片将其保存在照片中.
到目前为止我用过这个:
class ViewController: UIViewController, UIImagePickerControllerDelegate,UINavigationControllerDelegate{
let imagePicker: UIImagePickerController! = UIImagePickerController()
override func viewDidLoad() {
super.viewDidLoad()
imagePicker.delegate = self
let upSwipe = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipes))
upSwipe.direction = .up
view.addGestureRecognizer(upSwipe)
}
Run Code Online (Sandbox Code Playgroud)
和功能:
func handleSwipes(sender:UISwipeGestureRecognizer) {
if (sender.direction == .up){
if ( UIImagePickerController.isSourceTypeAvailable(.camera)){
if UIImagePickerController.availableCaptureModes(for: .rear) != nil {
imagePicker.allowsEditing = false
imagePicker.sourceType = .camera
imagePicker.cameraCaptureMode = .photo
present(imagePicker,animated: true, completion: {})
}
}
Run Code Online (Sandbox Code Playgroud)
在此之前,您需要将"隐私 - 照片库添加使用说明"添加到您的info.plist,否则您的应用程序将崩溃
用这个:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage{
UIImageWriteToSavedPhotosAlbum(pickedImage, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
dismiss(animated: true, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
然后,添加以下函数(与saltTigerK编写的函数相同)
func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
if let error = error {
// we got back an error!
let ac = UIAlertController(title: "Save error", message: error.localizedDescription, preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "OK", style: .default))
present(ac, animated: true)
} else {
let ac = UIAlertController(title: "Saved!", message: "Your altered image has been saved to your photos.", preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "OK", style: .default))
present(ac, animated: true)
}
}
Run Code Online (Sandbox Code Playgroud)
资料来源:https://www.hackingwithswift.com/read/13/5/saving-to-the-ios-photo-library
| 归档时间: |
|
| 查看次数: |
6673 次 |
| 最近记录: |