uni-app iOS 18 无所有图片
uni-app iOS 18 无所有图片
操作步骤:
- 使用 系统版本 大于iOS 18 的手机 选择图片
预期结果:
- 显示相册 所有图片 或最近项目
实际结果:
- 无所有图片 或最近项目
bug描述:
- iOS18,照片选择无法默认选择所有图片 没有 所有照片,或最近项目 的选项
| 信息类别 | 信息内容 |
|------------------|--------------|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Mac |
| PC开发环境操作系统版本号 | Retina, 13-inch, 2020 |
| 手机系统 | iOS |
| 手机系统版本号 | iOS 18 |
| 手机厂商 | 苹果 |
| 手机机型 | iphone16 |
| 页面类型 | vue |
| vue版本 | vue2 |
| 打包方式 | 离线 |
| 项目创建方式 | CLI |
| CLI版本号 | 3 |
仅Xcode16编译出的ipa在iOS18系统上有上述问题
临时可以先使用Xcode15出包,我们将尽快更新相关SDK
什么时候更新这个问题
非iphone16 设备正常么
ios18+不行 ios18以下 是正常的
只要升到系统到ios18以上就不行
在处理 uni-app
在 iOS 18 上无法显示所有图片的问题时,首先需要确保图片资源的正确加载和适配。以下是一些可能的解决方案和代码示例,帮助你排查和修复这个问题。
1. 检查图片路径
确保图片路径正确无误,特别是相对路径和绝对路径的使用。在 uni-app
中,你可以使用静态资源路径或者网络图片路径。
<!-- 静态资源 -->
<image src="/static/images/logo.png"></image>
<!-- 网络图片 -->
<image src="https://example.com/images/logo.png"></image>
2. 使用条件编译
针对 iOS 18 的特定问题,可以使用条件编译来适配不同的系统版本。虽然 uni-app
没有直接针对 iOS 18 的条件编译标签,但你可以通过平台判断来间接实现。
// 在页面脚本中判断平台
if (uni.getSystemInfoSync().platform === 'ios') {
// 执行针对 iOS 的特定逻辑
}
3. 图片加载失败处理
为图片组件添加 @error
事件处理器,以便在图片加载失败时执行相应的操作,比如显示占位图或重试加载。
<image
src="https://example.com/images/logo.png"
@error="handleError"
style="width: 100px; height: 100px;"
></image>
<script>
export default {
methods: {
handleError(e) {
console.error('图片加载失败', e);
// 显示占位图或重试加载逻辑
e.currentTarget.src = '/static/images/placeholder.png';
},
},
};
</script>
4. 使用 Base64 编码图片
如果图片资源较小,可以考虑将图片转换为 Base64 编码,直接嵌入代码中,这样可以避免路径问题。
<image src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."></image>
注意:Base64 编码会使图片体积增大约 33%,因此仅适用于小图片。
5. 检查 iOS 权限设置
确保 iOS 应用有权限访问网络资源或本地存储的图片。在 manifest.json
中配置必要的权限,并在 iOS 项目设置中检查相关权限设置。
6. 更新依赖和工具链
确保 uni-app
CLI、HBuilderX 以及相关依赖库都是最新版本,以兼容最新的 iOS 系统。
通过以上方法,你应该能够定位并解决 uni-app
在 iOS 18 上无法显示图片的问题。如果问题依然存在,建议检查具体的错误日志或联系 uni-app
社区获取更专业的帮助。