全屏视频将NavBar向上推至状态栏的大小,并在退出全屏

时间:2015-10-28 12:19:59

标签: ios titanium appcelerator titanium-alloy

问题是当用户切换到全屏视频然后返回时,NavigationWindow的导航栏被向上推到状态栏的大小并保持在那里。

对我来说唯一有效的解决方法是关闭并重新打开MainNavigationWindow。这可能不是最终解决方案。

更多提示来自我: 视频视图的z-index高于其他视频。 全屏vor应用程序并隐藏NavBar和StatusBar在tiapp.xml中被禁用。 MainNavigationWindow的全屏,它的主窗口被禁用 .tss文件。

看起来这将被忽略。 触发VideoPlayer的全屏信号并将导航栏向上推到状态栏的大小。 全屏退出后,导航栏仍保持在该位置。 在导航栏下面仍然是StatusBar大小的黑色间隙。

屏幕截图>> here <<

Appcelerator网站上5个月前提出的问题>> here <<。 (没有解决方案)

主窗口

<Alloy>
<NavigationWindow id="mainNavigationWindow" platform="ios">
<Window id="mainWindow" class="container">
<Require src="webview" id="startWindowWebViewView"/>
<Require src="videoPlayer" id="startWindowVideoPlayerView"/>
<Require src="menu" id="startWindowMenuView"/>
</Window>
</NavigationWindow>
</Alloy>

查看

<Alloy>
<View id="videoPlayerContainer" class="container">
<VideoPlayer id="videoPlayerContainerVideoPlayer" />
</View>
</Alloy>

TSS

"#videoPlayerContainerVideoPlayer":{
    height:Titanium.UI.FILL,
    width:Titanium.UI.FILL,
    borderWidth: 1,
    zIndex: 1,
    visible: false,
    mediaControlStyle: Titanium.Media.VIDEO_CONTROL_EMBEDDED,
    scalingMode: Titanium.Media.VIDEO_SCALING_ASPECT_FIT,
    autoplay: false
}

控制器

function hideVideoPlayer() {
$.videoPlayerContainer.setVisible(false);
$.videoPlayerContainerVideoPlayer.setSourceType(Titanium.Media.VIDEO_SOURCE_TYPE_UNKNOWN);
}

function setVideoPlayerMedia(media) {
$.videoPlayerContainerVideoPlayer.setSourceType(Titanium.Media.VIDEO_SOURCE_TYPE_UNKNOWN);
$.videoPlayerContainerVideoPlayer.setSourceType(Titanium.Media.VIDEO_SOURCE_TYPE_FILE);
$.videoPlayerContainer.setVisible(true);
$.videoPlayerContainerVideoPlayer.setMedia(media);

}

3 个答案:

答案 0 :(得分:1)

与此同时,我已经开发出两种解决方法或解决此错误。

第一个(在应用中永久隐藏状态栏。)

tiapp.xml(添加键:UIStatusBarHidden值:true)

<?xml version="1.0" encoding="UTF-8"?>
<ti:app xmlns:ti="http://ti.appcelerator.org">
    <ios>
        <plist>
            <dict>
                <key>UIStatusBarHidden</key>
                <true/>
            </dict>
        </plist>
    </ios>
</ti:app>

第二个(离开全屏时重新加载NavigationWindow) 快速举例:

videoPlayer.addEventListener('fullscreen', function(e) {

    if (e.entering == 0) {
        Ti.API.info("Get out of fullscreen");

        playbackTime = videoPlayer.getCurrentPlaybackTime();
        playing = videoPlayer.getPlaying();

        // Fixes The MenuBar Gap
        Alloy.Globals.mainNavigationWindow.close();
        Alloy.Globals.mainNavigationWindow.open();

        // Wait until Video is ready
        while (videoPlayer.getLoadState() != 3) {}

        // set initial Start time to last play time
        videoPlayer.setCurrentPlaybackTime(playbackTime);

        // checks if the Video was playing
        if (playing) {
            Ti.API.info("start playing again");
            videoPlayer.play();
        }
    } else {
        Ti.API.info("Get in fullscreen");
    }
});

答案 1 :(得分:0)

这看起来像是一个有效的错误。请check如果是您可以查看的已知问题,或者create具有可重现步骤/环境/代码的票证,以便我们可以重现并修复它。

答案 2 :(得分:0)

对于那些仍在寻找像我这样的解决方案的人来说,另一种解决方案是通过本地HTML5播放器流式传输您的视频并使用网络视图打开它,这是我找到的解决此问题的最佳解决方案,直到修复为止。