uni-app cover-view真机上video非全屏时不显示,全屏才显示

uni-app cover-view真机上video非全屏时不显示,全屏才显示

示例代码:

<view style="position: relative;">
    <video :src="videos[currentvideo]" id="myVideo" @pause="onPause" @play="onPlay" @error="oneee" :http-cache="false" :custom-cache="false" poster="https://www.0372.cn/images/logo2.png" :is-live="true" :show-progress="false" :muted="false" :auto-pause-if-navigate="false" :auto-pause-if-open-native="false" autoplay='true' :enable-progress-gesture="false" style="width: 100%;height: 400rpx;display: block;">
        <cover-view v-show="videos.length>1" style="position: absolute;top: 20rpx;right: 20rpx;" @click="changeVideo">
            <uni-icons type="videocam-filled" color="white" size="30"></uni-icons>
            <view style="font-size: 12px;color: white;text-align: center;">切换</view>
        </cover-view>
    </video>
</view>

操作步骤:

  • 页面上放一个video,在video上加个cover-view

预期结果:

  • cover-view正常显示

实际结果:

  • video非全屏时不显示

bug描述:

  • cover-view真机上video非全屏时不显示,全屏才显示

更多关于uni-app cover-view真机上video非全屏时不显示,全屏才显示的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app cover-view真机上video非全屏时不显示,全屏才显示的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app 中使用 cover-view 组件时,确实存在一些问题,尤其是在 video 组件非全屏状态下,cover-view 可能无法正常显示。这是因为在非全屏状态下,video 组件的层级较高,cover-view 可能会被遮挡或无法渲染。

解决方案

  1. 使用 cover-viewcover-image 的嵌套: 确保 cover-viewcover-imagevideo 组件的直接子组件,并且尽量使用 cover-view 包裹 cover-image

    <template>
      <view>
        <video id="myVideo" controls>
          <cover-view class="controls">
            <cover-image src="/static/play.png" @tap="play"></cover-image>
          </cover-view>
        </video>
      </view>
    </template>
    
  2. 使用 videocontrols 属性: 如果不需要自定义控件,可以直接使用 video 组件的 controls 属性,这样可以避免 cover-view 的显示问题。

    <template>
      <view>
        <video id="myVideo" controls></video>
      </view>
    </template>
    
  3. 使用 video 的全屏模式: 如果 cover-view 在全屏模式下可以正常显示,可以考虑在非全屏状态下隐藏自定义控件,全屏时再显示。

    <template>
      <view>
        <video id="myVideo" @fullscreenchange="onFullscreenChange">
          <cover-view :class="{'controls': isFullscreen}">
            <cover-image src="/static/play.png" @tap="play"></cover-image>
          </cover-view>
        </video>
      </view>
    </template>
    
    <script>
    export default {
      data() {
        return {
          isFullscreen: false
        };
      },
      methods: {
        onFullscreenChange(e) {
          this.isFullscreen = e.detail.fullScreen;
        },
        play() {
          // 播放逻辑
        }
      }
    };
    </script>
    
    <style>
    .controls {
      display: none;
    }
    .controls.visible {
      display: block;
    }
    </style>
回到顶部