2

私が探しているものを説明するために、例を挙げます: 連絡先アプリでは、テーブル ビューの最初の行にある [検索] フィールドをクリックすると、画面全体 (ステータス バーを除く) をスムーズに占有します。ナビゲーション コントローラーのタイトル バー。

編集:これは、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 タブレットが出てきたりしたら困るハックだと思います。ナビゲーションコントローラーのタイトルバーをスムーズに取り上げます。

4

1 に答える 1

0

検索バーは、デフォルトでそのようにアニメーション化する必要があります。Apple のサンプルTableSearchを確認してください。

于 2009-12-31T19:54:30.227 に答える