2011-05-19 120 views
0

我正在为iPhone构建一个带有一些选项卡的应用程序。 在编辑器网站中转述了这个问题hereappcelerator orientationchange navbar图像隐藏/显示

当我从纵向更改为风景时,我想隐藏导航栏。

它工作正常,如果我不切换到另一个选项卡。 但是,当我查看纵向中的1个选项卡, 切换到另一个选项卡,更改为横向视图, 切换回第一个选项卡 ,然后更改为纵向 navbar(window.barImage)全部伸出一个风景navBar的大小)

此外,当我删除所有我隐藏导航栏的代码发生同样的问题。

我试过在orientationchange上再次设置barImage,但这也没有帮助。

一个网站注意:我在navBar的每个选项卡上使用相同的图像可能是问题所在? portrait view of the app showing my problem

我标记为绿色的导航栏图像,蓝色部分是图像通常应该在的位置。

另请注意,图像是导航栏纵向视图的正确尺寸。

代码:

var windowWidth = Ti.Platform.displayCaps.platformWidth; 

var catWin = Ti.UI.createWindow({ 
    title:'', 
    barImage: 'images/barImage.png', 
    url:'vacancies/categories.js', 
    width: windowWidth 
}); 

catWin.orientationModes = [ 
    Titanium.UI.PORTRAIT, 
    Titanium.UI.LANDSCAPE_LEFT, 
    Titanium.UI.LANDSCAPE_RIGHT 
]; 

Titanium.Gesture.addEventListener('orientationchange', function(e) { 
    if(e.orientation == Titanium.UI.LANDSCAPE_RIGHT){ 
     catWin.hideNavBar(); 
    } else if(e.orientation == Titanium.UI.LANDSCAPE_LEFT){ 
     catWin.hideNavBar(); 
    } else if(e.orientation == Titanium.UI.PORTRAIT){ 
     catWin.showNavBar(); 
    } 
}); 
+0

请发布所有相关代码。 – bh88 2011-05-19 10:35:21

回答

0

虽然这不是最好的解决方案,因为它仍然看起来有点奇怪(但之前更好,),这是迄今为止最好的解决方案。

我所以至少在它看起来OK开始设置barImage在给createWindow代码:

var jbWin = Ti.UI.createWindow({ 
    title: '', 
    url:'homePage.js', 
    barImage: 'images/jobbroker_bar.png' 
}); 

然后在orientationchange我取消设置 我已经通过使用下面的代码中找到某种解决方案在barImage并开始使用titleImage:

Titanium.Gesture.addEventListener('orientationchange', function(e){ 
    if(e.source.isLandscape()){ 
     catWin.titleImage = ''; 
     catWin.barImage = ''; 
     catWin.hideNavBar(); 
    else if(e.orientation != Ti.UI.FACE_UP && e.orientation != Ti.UI.FACE_DOWN) { 
     catWin.titleImage = 'images/jobbroker_bar.png'; 
     catWin.showNavBar(); 
    } 
} 
+0

接受了我自己的awnser,因为它是最好的解决方案,我不会再去寻找更好的了。它需要很长时间.. – FLY 2011-06-01 15:02:13

1

你真的需要发布更多的代码,例如我不知道,如果你正在使用Ti.UI.currentWindow.hideNavBar();或者如果你只是使用.hide();.show();

从我可以告诉你的问题可能存在的问题可能在于宽度。尝试将其设置为'100%'而不是使用platformWidth。再次没有所有相关的代码,如您的orientationchange事件这是我可以给的最好的建议。希望能帮助到你。

的第三点意见:可能

Titanium.Gesture.addEventListener('orientationchange', function(e) { 
    if(e.source.isLandscape()){ 
     catWin.hideNavBar(); 
    } else { 
     catWin.barImage = 'images/barImage.png'; 
     catWin.showNavBar(); 
    } 
}); 

在那里只要某处或标签的事件。我会玩这个想法,看看它是否让你更进一步?

+0

感谢您的有用评论!我正在使用hideNavbar()和showNavbar()。我会更新我的问题 – FLY 2011-05-20 14:27:45

+0

我试过设置为'100%',但没有帮助。 另外我不认为orientationchange是真正相关的,因为如果我删除orientationchange代码(和hideNavbar/showNavbar),导航栏图像在更改标签时仍然拉伸,然后返回到纵向视图 – FLY 2011-05-20 15:00:19

+0

KS https:// github .com/appcelerator/titanium_mobile/blob/master/demos/KitchenSink/Resources/examples/window_navbar.js也有问题。您是否曾尝试将“barImage”重置添加到您的'orientationchange'事件或选项卡'focus'事件?像'catWin.barImage ='images/barImage.png';'?我知道它已经设置,但你可以通过简单地重新加载事件中的数据来解决几乎任何表格显示问题,所以我想知道'barImage'是否以同样的方式工作... – bh88 2011-05-20 17:46:27

0

你试过用“titleControl”关于导航栏设置图像,而不是barImage控制的?

也可以发布一个小的apps.js文件与相关图像的地方?如果没有运行项目,很难完全把握问题

+0

我已经将我的应用程序发布到github上:应用程序.js在这里找到:https://github.com/scubafly/Jobbroker-app/blob/master/Jobbroker/Resources/app.js – FLY 2011-05-31 11:56:43

+0

也是什么意思与“titleControl”? – FLY 2011-05-31 12:10:15