uni-app video标签在ios部分视频加载过程中先横着显示一下,再恢复正常显示
uni-app video标签在ios部分视频加载过程中先横着显示一下,再恢复正常显示
操作步骤:
- object-fit设置为contain video中部分视频会一开始展示横屏,过一段时间有可能会变回竖屏
预期结果:
- video中的视频竖向展示
实际结果:
- video中部分视频会一开始展示横屏,过一段时间有可能会变回竖屏
bug描述:
- video中部分视频会一开始展示横屏,过一段时间有可能会变回竖屏
| 项目信息 | 详情 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.99 |
| 手机系统 | iOS |
| 手机系统版本号 | iOS 17 |
| 手机厂商 | 苹果 |
| 手机机型 | iphone XR(版本号:17.1.2)、iphone X(版本号:16.7.2) |
| 页面类型 | nvue |
| vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
更多关于uni-app video标签在ios部分视频加载过程中先横着显示一下,再恢复正常显示的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app video标签在ios部分视频加载过程中先横着显示一下,再恢复正常显示的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 中使用 video 标签时,部分 iOS 设备在加载视频时可能会出现视频先横着显示一下,然后再恢复正常显示的情况。这通常与视频的宽高比、设备的屏幕方向以及视频的元数据加载顺序有关。以下是一些可能的解决方案和优化建议:
1. 设置视频的 object-fit 样式
- 默认情况下,
video标签可能会根据视频的宽高比和容器的尺寸进行缩放,导致显示异常。 - 可以通过设置
object-fit样式来控制视频的填充方式:video { object-fit: cover; /* 或 contain */ } cover会保持视频的宽高比并填满容器,可能会裁剪部分内容;contain会保持视频的完整显示,但可能会留黑边。
2. 强制设置视频容器的宽高
- 确保视频容器的宽高与视频的宽高比一致,避免加载时出现布局抖动。
- 例如:
<view style="width: 100%; height: 200px;"> <video src="your-video-url" style="width: 100%; height: 100%;"></video> </view>
3. 监听视频的 loadedmetadata 事件
- 视频的元数据(如宽高比)加载完成后,可能会出现显示异常。可以通过监听
loadedmetadata事件来确保视频加载完成后再显示:<video :src="videoUrl" @loadedmetadata="onVideoLoaded" style="width: 100%; height: 100%;" ></video>methods: { onVideoLoaded(event) { // 视频元数据加载完成后的处理 console.log('视频元数据加载完成'); } }
4. 检查视频的宽高比
- 确保视频的宽高比与播放容器的宽高比一致。如果视频是竖屏(如 9:16),但容器是横屏(如 16:9),可能会出现显示异常。
- 可以通过调整视频的宽高比或容器的尺寸来解决。
5. 启用 playsinline 属性
- 在 iOS 设备上,默认情况下视频可能会全屏播放。可以通过设置
playsinline属性来避免全屏播放:<video :src="videoUrl" playsinline webkit-playsinline style="width: 100%; height: 100%;" ></video>
6. 使用 poster 属性设置封面图
- 如果视频加载较慢,可以设置
poster属性来显示封面图,避免加载过程中出现空白或异常:<video :src="videoUrl" poster="your-poster-image-url" style="width: 100%; height: 100%;" ></video>
7. 检查设备屏幕方向
- 如果设备屏幕方向发生变化(如从竖屏切换到横屏),可能会导致视频显示异常。
- 可以通过监听屏幕方向变化事件来动态调整视频的显示方式:
uni.onWindowResize((res) => { console.log('屏幕方向变化', res); // 根据屏幕方向调整视频布局 });

