You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动