能否调整PHPickerViewController的照片展示顺序为旧图优先?
PHPickerViewController 自定义展示排序的实现方案
PHPickerViewController 本身不支持通过配置参数直接修改媒体资源的展示顺序——Apple 将这个组件的排序逻辑完全封装在系统相册UI层,没有开放对应API让开发者调整默认的「最新照片优先」规则。
如果需要实现「最旧照片优先」的展示需求,唯一可行的方案是基于 Photos 框架完全自定义相册选择界面:
- 步骤说明:
- 先请求相册访问权限,确保获取到
PHAuthorizationStatus.authorized权限 - 创建
PHFetchOptions并设置排序规则为按创建日期升序:let fetchOptions = PHFetchOptions() // ascending: true 表示最旧的资源排在前面 fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)] - 通过
PHAsset.fetchAssets(with: fetchOptions)获取排序后的资源列表 - 用
UICollectionView自定义展示这些PHAsset,并自行实现选择、结果回调等逻辑
- 先请求相册访问权限,确保获取到
这种方式虽然需要额外开发工作量,但能完全掌控排序规则,满足不同场景的展示需求。
补充:如果不想完全自定义界面,目前没有其他办法——PHPicker 不允许开发者干预它的内部排序逻辑,用户只能在系统相册里手动切换排序(但该操作由用户自主触发,开发者无法控制)。
内容的提问来源于stack exchange,提问作者asclepix
相关产品推荐
相关产品推荐

