iOS 14真机(iPhone 11)UIImagePickerController缩略图不显示求助
解决iOS14真机上UIImagePickerController缩略图空白问题
我之前在iOS14的iPhone 11真机上遇到过完全一样的情况——相册里的缩略图全是空白,但点击屏幕又能正常选中图片。结合你贴的代码,给你几个实用的排查和解决方向:
检查相册权限的完整配置
iOS14开始相册权限新增了「有限访问」的选项,如果权限请求配置不到位,很可能导致Picker加载缩略图失败。你需要确保Info.plist里添加了这两个权限描述:NSPhotoLibraryUsageDescription:说明你的App为什么需要访问相册NSPhotoLibraryAddUsageDescription:如果需要向相册保存图片的话也得加
另外,建议在present Picker前主动请求完整访问权限,避免用户只授予有限权限:
[PHPhotoLibrary requestAuthorizationForAccessLevel:PHAccessLevelReadWrite handler:^(PHAuthorizationStatus status) { if (status == PHAuthorizationStatusAuthorized) { dispatch_async(dispatch_get_main_queue(), ^{ // 在这里present你的UIImagePickerController }); } }];临时关闭
allowsEditing测试
你代码里设置了picker.allowsEditing = YES,我之前碰到过iOS14部分机型上,开启编辑模式会导致缩略图加载异常的情况。可以先把这个属性改成NO,运行看看缩略图能不能正常显示。如果能显示,再考虑用自定义编辑界面来替代系统的编辑功能。适配iOS13+的Scene场景
如果你用了SceneDelegate管理窗口,present控制器时要确保从当前活跃场景的根控制器发起,别再用旧的[UIApplication sharedApplication].keyWindow.rootViewController了。可以用这段代码获取正确的控制器:UIWindowScene *scene = (UIWindowScene *)[UIApplication sharedApplication].connectedScenes.allObjects.firstObject; UIViewController *currentVC = scene.delegate.window.rootViewController; [currentVC presentViewController:picker animated:YES completion:nil];排除系统相册的临时缓存问题
有时候可能是系统相册的缓存出了小问题,试试重启设备,或者在「设置-通用-还原-还原隐私设置」里重置权限,然后重新给App授予相册访问权限,再测试看看。
额外建议:如果以上方法都没解决,你可以试试iOS14推出的
PHPickerViewController,它是UIImagePickerController的官方替代方案,对iOS14及以后的系统兼容性更好,也能避免老组件的一些奇怪问题。
内容的提问来源于stack exchange,提问作者A B




