确认到 'UIImagePickerControllerDelegate' 委托。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let image = info[UIImagePickerController.InfoKey.editedImage] as? UIImage {
let imageToBeSaved = image
UIImageWriteToSavedPhotosAlbum(imageToBeSaved, nil, nil, nil)
}
if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
let imageToBeSaved = image
UIImageWriteToSavedPhotosAlbum(imageToBeSaved, nil, nil, nil)
}
}
UIImageWriteToSavedPhotosAlbum 这将保存到相册、画廊。
或者,它也可以存储在应用程序存储中。
static func saveImageToTemp(image: UIImage, withName name: String) -> String? {
let data = image.jpegData(compressionQuality: 0)
let cache = try? FileManager.default.url(for: .cachesDirectory, in: .userDomainMask, appropriateFor: nil, create: false)`enter code here`
if let filename = cache?.appendingPathComponent(name) {
try? data?.write(to: filename)
return filename.absoluteString
}
return nil
}
static func getImage(fromPath path: String) -> UIImage? {
if FileManager.default.fileExists(atPath: path) {
if let image = UIImage(contentsOfFile: path) {
return image
}
}
return nil
}
static func deleteFile(atPath path: String) {
if FileManager.default.fileExists(atPath: path) {
try? FileManager.default.removeItem(atPath: path)
}
}
static func deleteFile(withName name: String) {
let cache = try? FileManager.default.url(for: .cachesDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
if let fileURL = cache?.appendingPathComponent(name) {
if FileManager.default.fileExists(atPath: fileURL.path) {
do {
try FileManager.default.removeItem(atPath: fileURL.path)
} catch {
print("\(#function): Error \(error)")
}
}
}
}
iOS 中可用的目录类型
static let documents = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
static let library = try? FileManager.default.url(for: .libraryDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
static let downloads = try? FileManager.default.url(for: .downloadsDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
static let user = try? FileManager.default.url(for: .userDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
static let cache = try? FileManager.default.url(for: .cachesDirectory, in: .userDomainMask, appropriateFor: nil, create: false)