2011-05-19 103 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