问题是当用户切换到全屏视频然后返回时,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);
}
答案 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)
答案 2 :(得分:0)
对于那些仍在寻找像我这样的解决方案的人来说,另一种解决方案是通过本地HTML5播放器流式传输您的视频并使用网络视图打开它,这是我找到的解决此问题的最佳解决方案,直到修复为止。