Skip to content

Instantly share code, notes, and snippets.

@amirhanov
Last active August 1, 2019 08:20
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amirhanov/b8dd189de99de9bb74f59174fbb7dec2 to your computer and use it in GitHub Desktop.
Save amirhanov/b8dd189de99de9bb74f59174fbb7dec2 to your computer and use it in GitHub Desktop.
Как сохранить фотографию в Photo Library.
Всем привет!
Сегодня мы научимся сохранять фотографию в Photo Library. Для достижения данной цели мы воспользуемся Библиотекой Photos, для этого переходим в файл ViewController (или свой) и импортируем ее:
import Photos
Ниже в классе создадим константку для фотографии:
let snapshot: UIImage = someImage
Вместо someImage можете указать свою фотографию или например фотографию загруженную пользователем в UIImage. Далее нам нужно создать функцию, в которой мы реализуем сохранение. Создаем ее:
fileprivate func saveImage() {
}
Внутри укажем PHPhotoLibrary, которая предоставляет доступ к метаданным и данным изображений для фотографий, видео и другого связанного с ними контента в библиотеке фотографий пользователя, включая контент из Camera Roll, iCloud Shared, Photo Stream, импортированный и синхронизированный из iTunes. После запрашиваем внести изменения с помощью performChanges и внутри создадим запрос на создание, удаление, изменение метаданных с помощью PHAssetChangeRequestе. Далее указываем новый актив с помощью creationRequestForAsset, который нужно создать, в нашем случае это наша константа:
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAsset(from: snapshot)
}, completionHandler: { success, error in
if success {
// Успешно исход!
}
else if let error = error {
// Отмена
}
else {
// Отмена без ошибки
}
})
Теперь укажем, что произойдет в случае успешного сохранения фотографии или отмены сохранения. Вы можете здесь создать например Alert Controller или просто написать print().
Из-за настроек конфиденциальности Apple, мы должны спросить у пользователя, можно ли получить доступ к Библиотеке и можно ли туда что-то сохранять. Перейдем в файл info.plst, нажмем на плюс и создадим три запроса:
NSCameraUsageDescription - Разрешить доступ к камере для фотографирования
NSPhotoLibraryUsageDescription - Включите доступ к библиотеке фотографий, чтобы выбрать фотографию из своей библиотеки
NSPhotoLibraryAddUsageDescription - Включите доступ к библиотеке фотографий, чтобы сохранять изображения в своей библиотеке фотографий прямо из приложения
Отлично! Остается только добавить функцию saveImage() внутрь вашей кнопки, при нажатии на которую произойдет сохранение фотографии в Photo Library и можно тестировать приложение.
Благодарю за внимание!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment