私が探しているものを説明するために、例を挙げます: 連絡先アプリでは、テーブル ビューの最初の行にある [検索] フィールドをクリックすると、画面全体 (ステータス バーを除く) をスムーズに占有します。ナビゲーション コントローラーのタイトル バー。
編集:これは、TabBarController内にあるNavigationController内にあるUITableView内にあるUISearchDisplayControllerに関連していると確信していることにも気付きました。問題は、検索表示がナビゲーションコントローラーではなく、テーブルビューのサイズのみを占めることです。
UIView アニメーションを使用し、ナビゲーション コントローラーのフレーム全体のサイズを変更して、表示されている画面のビューの上で開始することで、プログラムでこれを模倣しました。下記参照:
-(void)SetNavContTitleVis:(BOOL)ishidden {
[UIView beginAnimations:@"frame" context:nil];
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration: 0.3];
CGRect frameIn;
if (ishidden) {
frameIn = CGRectMake(0,-46,320,480);
} else {
frameIn = CGRectMake(0,0,320,480-46);
}
self.parentViewController.view.frame=frameIn
[UIView commitAnimations];
}
これは問題なく機能し、仕事は完了しますが、ハックのように感じます。検索表示コントローラーでこれを行う簡単な方法はありますか? 今後、ディスプレイのサイズが変わったり、Apple タブレットが出てきたりしたら困るハックだと思います。ナビゲーションコントローラーのタイトルバーをスムーズに取り上げます。