【问题标题】:appcelerator orientationchange navbar image hide / showappceleratororientationchange 导航栏图像隐藏/显示
【发布时间】:2011-05-19 08:33:33
【问题描述】:

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

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

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

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

我尝试在方向更改时再次设置 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();
    }
});

【问题讨论】:

  • 请发布所有相关代码。

标签: javascript appcelerator navbar orientation-changes


【解决方案1】:

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

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

第三条评论:可能

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

就在某处或选项卡事件中。我会尝试这个想法,看看它是否能让你更进一步?

【讨论】:

  • 感谢您的有用评论!我正在使用 hideNavbar() 和 showNavbar()。我会更新我的问题
  • 我尝试将 with 设置为 '100%',但没有帮助。另外我不认为orientationchange真的很重要,因为如果我删除orientationchange代码(和hideNavbar / showNavbar),导航栏图像在更改选项卡然后返回纵向视图时仍然会被拉伸
  • 奇怪的 KS github.com/appcelerator/titanium_mobile/blob/master/demos/… 也有这个问题。您是否尝试过将barImage 的重置添加到您的orientationchange 事件或标签focus 事件?像catWin.barImage = 'images/barImage.png'; 这样的东西?我知道它已经设置好了,但是您可以通过简单地重新加载事件中的数据来解决几乎所有表格显示问题,所以我想知道 barImage 是否以同样的方式工作......
  • 我尝试将图像(再次)设置为orientationchange或点击焦点,结果都是barImage消失了。
  • 我尝试在方向更改和标签焦点上设置 barImage (agian)。最终都让 barImage 消失了。然后我删除了所有影响 bar 图像的方向更改 / 选项卡焦点,并发现当我再次单击当前选项卡时 barImage 会重置。现在我只需要找到一种方法来模拟标签栏点击方向更改即可完成这项工作!
【解决方案2】:

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

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

【讨论】:

  • 接受了我自己的 awnser,因为它是最好的解决方案,我不会再寻找更好的解决方案了。
【解决方案3】:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-01-26
  • 2019-02-25
  • 1970-01-01
  • 1970-01-01
  • 2019-03-12
  • 2016-03-29
  • 2011-05-30
  • 1970-01-01
相关资源
最近更新 更多