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
ますか?
最近、Xcode 5 DPをダウンロードしてiOS 7でアプリをテストしました。最初に気づき、確認したのは、ステータスバーとナビゲーションバーを考慮してビューの境界が常にサイズ変更されるとは限らないことです。
viewDidLayoutSubviewsで、ビューの境界を印刷します。
{{0, 0}, {320, 568}}
これにより、コンテンツがナビゲーションバーとステータスバーの下に表示されます。
メイン画面の高さを取得し、ステータスバーの高さとナビゲーションバーの高さを差し引いて、自分で高さを計算できることはわかっていますが、これは不要な余分な作業のようです。
他の誰かがこの問題を経験しましたか?
更新:
この特定の問題の解決策を見つけました。ナビゲーションバーの半透明プロパティをNOに設定します。
self.navigationController.navigationBar.translucent = NO;
これにより、ビューがナビゲーションバーとステータスバーの下にフレーム化されなくなります。
ただし、ナビゲーションバーを半透明にしたい場合の解決策は見つかりませんでした。たとえば、写真を全画面で表示する場合、ナビゲーションバーを半透明にして、ビューをその下にフレーム化します。それは機能しますが、ナビゲーションバーの表示/非表示を切り替えると、さらに奇妙な結果が発生しました。最初のサブビュー(a UIScrollView
)は、境界yの原点が毎回変更されます。