CGRect cgRect1 = [[UIScreen mainScreen] applicationFrame];
UISearchBar *mySearchBar = [[UISearchBar alloc]
initWithFrame:CGRectMake(0, 0, cgRect.size.width, 40)];
mySearchBar.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight ;
UITableView *myTableView = [[UITableView alloc]
initWithFrame:CGRectMake(0, 40, cgRect.size.width, cgRect.size.height-40)];
myTableView.autoresizingMask =
UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
[self.view addSubview:mySearchBar];
[self.view addSubview:myTableView];
以前のバージョンでは、正しく動作しています。検索バーはstatusbar
、ナビゲーション バーの下に表示されます。tableview
が検索バーの下に表示されます
しかし、これを実行するXcode 5 sdk iOS 7
と、検索バーが表示されず (ステータス バーとナビゲーション バーの下に配置されていると思います)、テーブル ビューの上にナビゲーション バーが表示されます。
iOS 7
安定版リリースで修正されますか?
それとも私のコーディングの問題ですか?
それとも、 の y(y = statubar height + nav bar height)
値を追加して処理する必要がありiOS 7
ますか?
最近、iOS 7 でアプリをテストするために Xcode 5 DP をダウンロードしました。最初に気づいて確認したことは、ビューの境界が常にステータス バーとナビゲーション バーを考慮してサイズ変更されていないことです。
viewDidLayoutSubviews で、ビューの境界を出力します。
{{0, 0}, {320, 568}}
これにより、コンテンツがナビゲーション バーとステータス バーの下に表示されます。
メイン画面の高さを取得し、ステータス バーの高さとナビゲーション バーの高さを差し引いて、高さを自分で説明できることはわかっていますが、それは不必要な余分な作業のように思えます。
他の誰かがこの問題を経験しましたか?
アップデート:
この特定の問題の解決策を見つけました。ナビゲーション バーの半透明プロパティを NO に設定します。
self.navigationController.navigationBar.translucent = NO;
これにより、ビューがナビゲーション バーとステータス バーの下に表示されなくなります。
ただし、ナビゲーション バーを半透明にしたい場合の修正方法は見つかりませんでした。たとえば、写真を全画面表示する場合、ナビゲーション バーを半透明にし、その下にビューをフレームで表示したいと考えています。それは機能しますが、ナビゲーション バーの表示/非表示を切り替えると、さらに奇妙な結果が発生しました。最初のサブビュー (a UIScrollView
) は、毎回変更される境界 y 原点を取得します。