Сводка: Есть ли способ управления порядком сортировки для альбома, созданного приложением на пользовательском устройстве?Я бы хотел, чтобы альбом, который я создал, сортировал по дате, но сортировал по порядку загрузки.
Подробности: Я использую нижеприведенную функцию save()
, чтобы сохранить UIImage в альбом наiPhone пользователя.Это прекрасно работает, но изображение теряет свое первоначальное время создания, когда копия сохраняется.Для решения этой проблемы я прочитал время создания, когда я загружаю изображение на сервер.Таким образом, я просто назначаю его изображению, когда ресурс создается с помощью assetChangeRequest.creationDate = storedImageDate
PHPhotoLibrary.shared().performChanges({
let assetChangeRequest = PHAssetChangeRequest.creationRequestForAsset(from: image)
let assetPlaceholder = assetChangeRequest.placeholderForCreatedAsset
let albumChangeRequest = PHAssetCollectionChangeRequest(for: assetCollection)
assetChangeRequest.creationDate = storedImageDate
let assetEnumeration:NSArray = [assetPlaceholder!]
albumChangeRequest!.addAssets(assetEnumeration)
}, completionHandler: { success, error in
if error != nil {
print("\(error?.localizedDescription ?? "")")
}
})
. Вышеописанное прекрасно работает, и когда я смотрю на вновь созданное изображение, оно находится в созданном альбоме, изображения имеютправильная дата на изображении и изображения, просматриваемые в рулоне камеры, сортируются по дате создания изображения, как и ожидалось.Проблема возникает при переходе в альбом, созданный моим приложением для изображений.Там изображения имеют дату изображения, но они отсортированы по порядку загрузки, а не по изображению.Я также заметил, что когда я долго нажимаю на изображения в альбоме, это позволяет мне перемещать порядок.
Я сделал что-то не так при создании своего альбома?Могу ли я установить сортировку по дате изображения?Возможно, есть способ изменить порядок сортировки для моего альбома?Есть ли способ получить цикл по альбому, чтобы упорядочить его по дате?
Это полная функция, в которой изображение сохраняется в созданный альбом, который не сортируется по дате создания изображения.
func save(image:UIImage, albumName:String) {
var albumFound = false
var assetCollection: PHAssetCollection!
var assetCollectionPlaceholder: PHObjectPlaceholder!
// https://stackoverflow.com/questions/27008641/save-images-with-phimagemanager-to-custom-album
// Check if the Album exists and get collection
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "title = %@", albumName)
let collection : PHFetchResult = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: fetchOptions)
if let _: AnyObject = collection.firstObject {
albumFound = true
assetCollection = collection.firstObject
} else {
//If not found - Then create a new album
PHPhotoLibrary.shared().performChanges({
let createAlbumRequest : PHAssetCollectionChangeRequest = PHAssetCollectionChangeRequest.creationRequestForAssetCollection(withTitle: albumName)
assetCollectionPlaceholder = createAlbumRequest.placeholderForCreatedAssetCollection
}, completionHandler: { success, error in
albumFound = success
if (success) {
let collectionFetchResult = PHAssetCollection.fetchAssetCollections(withLocalIdentifiers: [assetCollectionPlaceholder.localIdentifier], options: nil)
print(collectionFetchResult)
assetCollection = collectionFetchResult.firstObject
}
})
}
if albumFound {
PHPhotoLibrary.shared().performChanges({
let assetChangeRequest = PHAssetChangeRequest.creationRequestForAsset(from: image)
let assetPlaceholder = assetChangeRequest.placeholderForCreatedAsset
let albumChangeRequest = PHAssetCollectionChangeRequest(for: assetCollection)
assetChangeRequest.creationDate = storedImageDate
let assetEnumeration:NSArray = [assetPlaceholder!]
albumChangeRequest!.addAssets(assetEnumeration)
}, completionHandler: { success, error in
if error != nil {
print("\(error?.localizedDescription ?? "")")
}
})
}
}