Сохранить изображение в фотоальбом с метаданными даты и времени

Я пытаюсь использовать свойство метаданных в writeImageDataToSavedPhotosAlbum сохранить GIF в фотоальбоме iPhone и добавить метаданные даты / времени, чтобы сохраненный GIF появлялся в другом месте в фотоальбоме пользователя, а не в месте по умолчанию в конце фотоальбома.

Я пытался сделать следующее:

let metadata: [String: AnyObject]! = [kCGImagePropertyTIFFDictionary as String: 
    [kCGImagePropertyTIFFDateTime as String: dateTime!], 
    kCGImagePropertyExifDictionary as String: 
    [kCGImagePropertyExifDateTimeDigitized as String: dateTime!, 
    kCGImagePropertyExifDateTimeOriginal as String: dateTime!]]
library.writeImageDataToSavedPhotosAlbum(data, metadata: metadata, completionBlock: completionBlock)

и отладочная печать для переменной метаданных показывает:

["{TIFF}": {
    DateTime = "2015:10:09 20:07:48";
}, "{Exif}": {
    DateTimeDigitized = "2015:10:09 20:07:48";
    DateTimeOriginal = "2015:10:09 20:07:48";
}]

Однако это не похоже на настройку сработавших метаданных, потому что GIF все еще сохраняется в конце фотоальбома с текущей меткой времени вместо метки времени, которую я пытаюсь установить.

1 ответ

Решение

Похоже, что приложение "Фотографии" не выполняет сортировку по дате в метаданных изображения (скорее всего, поскольку эти метаданные могут храниться в iCloud, они потенциально недоступны локально). Вместо этого, кажется, сортировать по creationDate, который является свойством, определенным на PHAsset, Вы можете изменить это с помощью фреймворка Photos. Нечто подобное должно сработать:

PHPhotoLibrary.sharedPhotoLibrary().performChanges({ () -> Void in
    let request = PHAssetChangeRequest(forAsset: asset)
    request.creationDate = dateTime!
}, completionHandler: { (success: Bool, error: NSError?) -> Void in
    dispatch_async(dispatch_get_main_queue()) {
        //done
    }
})

Однако обратите внимание, что альбом "Фотопленка" или "Все фотографии" сортирует их не так, как в представлении "Годы", "Коллекции" и "Моменты". По какой-то причине Camera Roll/All Photos не сортируется на creationDate в то время как годы, коллекции и моменты. Он также не использует метаданные фотографий, поэтому я не уверен, что именно он рассматривает для сортировки фотографий для этого альбома.

Другие вопросы по тегам