appcelerator orientationchange导航栏图像隐藏/显示

时间:2011-05-19 08:33:33

标签: javascript appcelerator navbar orientation-changes

我正在构建一个带有iPhone标签的应用程序。 在appcelerator网站here

中重述了这个问题

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

如果我不切换到另一个标签,它可以正常工作。 但当我在肖像中查看1个标签时,  切换到另一个选项卡,切换到横向视图,  切换回第一个标签,  然后改为后面的肖像 导航栏(window.barImage)全部伸展(达到横向导航栏的大小)

此外,当我删除所有隐藏导航栏的代码时,也会出现同样的问题。

我已尝试在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();
    }
});

3 个答案:

答案 0 :(得分: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();
    }
});

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

答案 1 :(得分:0)

虽然这不是最好的解决方案,因为它看起来仍然有点奇怪(但比以前更好),这是迄今为止最好的解决方案。 我通过使用以下代码找到了某种解决方案:

我在createWindow代码中设置了barImage,所以至少在开始时看起来没问题:

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();
   }
}

答案 2 :(得分:0)

您是否尝试使用导航栏上的“titleControl”来设置图像而不是barImage控件?

你也可以发布一个带有相关图像的小apps.js文件吗?没有运行项目就很难完全掌握问题