Для сохранения и получения фото пользователя в Swift вы можете использовать класс UIImagePickerController
.
Давайте рассмотрим, как сохранить фото пользователя на устройстве:
1. Импортируйте библиотеку UIKit
в ваш файл Swift, чтобы использовать классы UIImagePickerController
и UIImage
.
import UIKit
2. Создайте экземпляр класса UIImagePickerController
и установите его делегат.
let imagePicker = UIImagePickerController() imagePicker.delegate = self
Обратите внимание, что мы установили делегата на self
. Для того, чтобы ваш класс мог быть делегатом UIImagePickerController
, он должен соответствовать протоколу UIImagePickerControllerDelegate
.
3. Реализуйте метод делегата imagePickerController(_:didFinishPickingMediaWithInfo:)
, чтобы получить выбранное фото и сохранить его на устройстве.
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { if let pickedImage = info[.originalImage] as? UIImage { // Сохраняем фото на устройстве UIImageWriteToSavedPhotosAlbum(pickedImage, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil) } picker.dismiss(animated: true, completion: nil) } @objc func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) { if let error = error { // Обработка ошибок сохранения } else { // Фото успешно сохранено на устройстве } }
Метод imagePickerController(_:didFinishPickingMediaWithInfo:)
будет вызываться после того, как пользователь выберет фото. Внутри этого метода мы получаем выбранное фото (pickedImage
) и используем метод UIImageWriteToSavedPhotosAlbum(_:completionTarget:completionSelector:contextInfo:)
для сохранения фото на устройстве. Мы также передаем селектор image(_:didFinishSavingWithError:contextInfo:)
, который будет вызываться после завершения сохранения фото. В этом обработчике вы можете обработать возможные ошибки сохранения или выполнить другие действия после успешного сохранения фото.
Теперь, когда у нас есть способ сохранить фото, рассмотрим, как получить фото пользователя:
1. Запросите разрешение пользователя на доступ к его фотоальбому. Для этого добавьте запись NSPhotoLibraryUsageDescription
в файл Info.plist вашего проекта и укажите в ней текстовое описание того, зачем вам нужен доступ к фотоальбому.
2. Создайте экземпляр класса UIImagePickerController
, установите его делегат, а затем вызовите метод present(_:animated:completion:)
для отображения контроллера выбора фото.
let imagePicker = UIImagePickerController() imagePicker.delegate = self present(imagePicker, animated: true, completion: nil)
Обратите внимание, что мы снова установили делегата на self
, поэтому ваш класс должен соответствовать протоколу UIImagePickerControllerDelegate
.
3. Реализуйте метод делегата imagePickerController(_:didFinishPickingMediaWithInfo:)
, чтобы получить выбранное фото.
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { if let pickedImage = info[.originalImage] as? UIImage { // Выполняйте действия с выбранным фото } picker.dismiss(animated: true, completion: nil) }
Метод imagePickerController(_:didFinishPickingMediaWithInfo:)
будет вызываться после того, как пользователь выберет фото. Внутри этого метода мы получаем выбранное фото (pickedImage
) и можем выполнять с ним любые действия, необходимые вашему приложению.
Теперь вы знаете, как сохранить и получить фото пользователя в приложении, используя Swift и класс UIImagePickerController
.