ウィンドウを覆うカスタム uiView を作成しています。これは、ナビゲーション コントローラーのおとりの uiview のように機能します。だから私はナビゲーションバーをカバーするためにこのようにしなければならなかった....長い話...
セットアップ方法は次のとおりです。
self.searchPopDown.frame = CGRectMake(0, 20, self.navigationController.view.frame.size.width, self.navigationController.view.frame.size.height-20);
self.searchPopDown.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
20 は、ステータス バーを補正するためのものです。
次に、ビューをサブビューとしてアプリ ウィンドウに追加するだけです。
//this will add the view ontop of a modalViewController and support rotation!
UIWindow* window = [UIApplication sharedApplication].keyWindow;
if (!window) {
window = [[UIApplication sharedApplication].windows objectAtIndex:0];
}
if ([[[window subviews] objectAtIndex:0] isKindOfClass:[SVProgressHUD class]]){
//There is a chance that the window will be the SVProgressHUD in this case we need to get the main window.
window = [[UIApplication sharedApplication].windows objectAtIndex:0];
}
[[[window subviews] objectAtIndex:0] addSubview:self.searchPopDown];
これらすべてがうまく機能します。しかし、私は奇妙なことに気づきました。iPhone では、このビューはアプリの下部にある UITabBar をカバーするようにサイズ変更されます。ただし、iPad では、UITabBar を補うために正しくサイズ変更されます。理由はありますか?
ありがとう
=================
この問題を説明するスクリーンショットを次に示します。これは、ビューがすべての偽のビューをロードすると、どのように見えるかです。ビューが表示されます (ユーザーに関する限り、ビューとナビゲーション バーのボタンがわずかに変更されています。検索すると、この偽のビューが消え、検索結果の下に実際のビューが表示されます。iPad では、偽のビューは表示されません。タブバーを覆わないでください.iPhoneでもこれを行わないのはなぜですか?
==========
edit 2 別の奇妙なこと。ナビゲーション コントローラーの高さを取得するためにログ メッセージを生成しています。通常表示するか、モーダルビューとして表示し、タブバーがないかによって、49 ずつ変化します。
したがって、ログには 431 が正しい高さであると書かれています。インターフェイス ビルダーに移動し、431 で測定されたシンプルなピンク色のビューをセットアップします。見栄えがします :) ただし、サイズを手動で 431 に設定すると機能しません。これを正しく機能させるには、サイズを298に設定する必要があります...奇妙な...
ピンクのバーが見えますか?それは文字通り431の高さです...そしてログはそれが私の見解であると言っています..しかし、そうではありません:/
============
編集:3
これを imagebackground までたどりましたが、バブルのロゴのサイズが正しく変更されていません...