0

我正在为 iPhone 构建一个带有一些标签的应用程序。在这里改写了appcelerator网站中的问题

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

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

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

我尝试在orientationchange上再次设置barImage,但这也无济于事。

网站注释:我在导航栏的每个选项卡上都使用相同的图像,这可能是问题吗?显示我的问题的应用程序的纵向视图

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

另请注意,图像大小适合导航栏的纵向视图。

代码:

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

3 回答 3

1

您确实需要发布更多代码,例如我不知道您是使用Ti.UI.currentWindow.hideNavBar();还是仅使用.hide();and .show();

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

第三条评论:可能

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

就在某处或选项卡事件中。我会玩弄这个想法,看看它是否能让你走得更远?

于 2011-05-19T21:04:24.380 回答
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();
   }
}
于 2011-05-30T14:04:28.550 回答
0

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

你也可以在某处发布一个带有相关图像的小apps.js文件吗?不跑项目很难完全把握问题

于 2011-05-30T17:23:09.977 回答