能否打开指定相册
Closed this issue · 6 comments
有一个需求,传入指定的相册名称,打开默认选中的是对应的相册浏览,看了下api貌似并没有对应参数,能否支持下?
config.fetchAssetCollection = TestPhotoFetchAssetCollection.self
public struct TestPhotoFetchAssetCollection: PhotoFetchAssetCollection {
public static func fetchCameraAssetCollection(_ config: PickerConfiguration, options: PHFetchOptions) -> PhotoAssetCollection? {
if /*自定义默认显示的相册*/ {
if config.creationDate {
options.sortDescriptors = [
NSSortDescriptor(
key: "creationDate",
ascending: config.creationDate
)
]
}
var collection: PhotoAssetCollection?
fetchAssetCollections(options: options) { assetCollection, isCameraRoll, stop in
if !isCameraRoll {
collection = assetCollection
stop.pointee = true
}
}
if let collection {
return collection
}
}
return DefaultPhotoFetchAssetCollection.fetchCameraAssetCollection(config, options: options)
}
}
你好, 按照上边的方式实现了, 我们采用albumShowMode方式为popup,有点小问题, 比如自定义相册为'xxx', 弹出后点击上边的标题展示albumList会发现显示的是'xxx',但是列表选中的却是'最近项目', 切换几次后'最近项目'又不见被替换为'xxx'了,这时列表里有2个'xxx'相册, 虽然可以修改自定义相册collection.isSelected = true
稳定这种情况, 但是我们希望弹出相册列表时默认选中的是'xxx',同时'最近项目'也存在,这样可以实现吗?
_ config: PickerConfiguration,
options: PHFetchOptions
) -> PhotoAssetCollection? {
if config.creationDate {
options.sortDescriptors = [
NSSortDescriptor(
key: "creationDate",
ascending: config.creationDate
)
]
}
var collection: PhotoAssetCollection?
fetchAssetCollections(options: options) { assetCollection, isCameraRoll, stop in
if !isCameraRoll, assetCollection.albumName == "xxx" {
collection = assetCollection
stop.pointee = true
}
}
if let collection {
// collection.isSelected = true
return collection
}
return DefaultPhotoFetchAssetCollection.fetchCameraAssetCollection(config, options: options)
}```
![image](https://github.com/SilenceLove/HXPhotoPicker/assets/12481783/5d31afad-848d-4c9b-8fcd-b3db4aa899e4)
你好, 按照上边的方式实现了, 我们采用albumShowMode方式为popup,有点小问题, 比如自定义相册为'xxx', 弹出后点击上边的标题展示albumList会发现显示的是'xxx',但是列表选中的却是'最近项目', 切换几次后'最近项目'又不见被替换为'xxx'了,这时列表里有2个'xxx'相册, 虽然可以修改自定义相册
collection.isSelected = true
稳定这种情况, 但是我们希望弹出相册列表时默认选中的是'xxx',同时'最近项目'也存在,这样可以实现吗?_ config: PickerConfiguration, options: PHFetchOptions ) -> PhotoAssetCollection? { if config.creationDate { options.sortDescriptors = [ NSSortDescriptor( key: "creationDate", ascending: config.creationDate ) ] } var collection: PhotoAssetCollection? fetchAssetCollections(options: options) { assetCollection, isCameraRoll, stop in if !isCameraRoll, assetCollection.albumName == "xxx" { collection = assetCollection stop.pointee = true } } if let collection { // collection.isSelected = true return collection } return DefaultPhotoFetchAssetCollection.fetchCameraAssetCollection(config, options: options) }``` ![image](https://github.com/SilenceLove/HXPhotoPicker/assets/12481783/5d31afad-848d-4c9b-8fcd-b3db4aa899e4)
这个问题下个版本会修改,不会替换掉第一个相册
试了最新的修改代码后相册已经不会被替换掉了, 然而发现有一个bug:
https://github.com/SilenceLove/HXPhotoPicker/assets/12481783/927e7131-99b0-4a49-bbb0-dc5862c44434
视频中可以看到打开自定义相册后选中状态有些错乱, 我调试了下大概知道原因:
self.cameraAssetCollection
可能还没拿到的时候已经走到这个if判断里, 看起来2个queue执行完毕的先后顺序并不能确定,所以时好时坏.
最新的代码试试