0

iPhone用のいくつかのタブを備えたアプリを構築しています。ここでappceleratorのウェブサイトの質問を言い換えました

縦向きから横向きに変更するとき、ナビゲーションバーを非表示にしたい。

別のタブに切り替えなければ問題なく動作します。しかし、ポートレートで1つのタブを表示し、別のタブに切り替え、ランドスケープビューに変更し、最初のタブに戻ってからポートレートに変更すると、ナビゲーションバー(window.barImage)がすべて引き伸ばされます(ランドスケープのサイズに)ナビゲーションバー)

また、ナビゲーション バーを非表示にするコードをすべて削除すると、同じ問題が発生します。

orientationchange で barImage を再度設定しようとしましたが、それも役に立ちません。

サイト ノート: navBar のすべてのタブで同じ画像を使用していますが、それが問題でしょうか?私の問題を示すアプリの縦表示

ナビゲーションバーの画像を緑色でマークしました。青色の部分は、画像が通常あるべき場所です。

また、画像はナビゲーション バーの縦向きビューに適したサイズであることにも注意してください。

コード:

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();ます.show();.

私が言えることから、問題は幅にある可能性があります。'100%'を使用する代わりに に設定しようとしていplatformWidthます。イベントなどの関連するコードがすべてない場合でも、orientationchangeこれが私ができる最善のアドバイスです。それが役に立てば幸い。

3 番目のコメント:おそらく

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

barImage コントロールの代わりに Navbar の「titleControl」を使用してイメージを設定しようとしましたか?

また、関連付けられた画像を含む小さな apps.js ファイルをどこかに投稿できますか? プロジェクトを実行しないと問題を完全に把握することは難しい

于 2011-05-30T17:23:09.977 に答える