3

基本的に、Facebook for iPhone のログイン画面の動作を再現したいと考えています。入力フィールドがタッチされると、ロゴ/ヘッダー ビューの高さが下がり、キーボード用のスペースが確保されます。

ここにUITableView(静的コンテンツを含む)があります:

私のログインシーン

「コントロール」は実際UIViewにはロゴを含む私が持っているものでUIImageView、「テーブルビューセクション」にはユーザー名/パスワードのUITextFieldsが含まれています。

UITableViewCells私の質問は、 「テーブル ビュー セクション」を自然にスライドさせながら、UIView (「コントロール」) の高さを下げてアニメーション化するにはどうすればよいですか? 私は次のことを試しました:

 [UIView animateWithDuration:1.0f animations:^{
    CGRect theFrame = _headerView.frame;
    theFrame.size.height -= 50.f;
    _headerView.frame = theFrame;
}];

ヘッダー_headerViewの はどこにありますか。UIViewサイズは変更されUITableViewますが、UITableViewCell がサイズ変更されたかのように反応しません (つまり、ログイン UITableViewCells は上に移動しません)。どうすればこれを修正できますか?

のサイズを変更する方法の例を見てきましたが、テーブル ビュー セクションがグループ化されており、ログイン セクションのように見えUITableViewCellないため、ヘッダー/ロゴを に配置できません。UITableViewCell

編集

素晴らしい答えです!view_is_upインスタンス変数を使用して、アニメーション化する方法は次のとおりです。

-(void)moveTableView:(BOOL)up{
    float move_distance = 55.f;
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:.3f];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    UIEdgeInsets insets = self.tableView.contentInset;
    if(view_is_up&&!up){
        insets.top += move_distance;
        view_is_up = NO;
    }
    else if(!view_is_up&&up){
        insets.top -= move_distance;
        view_is_up = YES;
    }
    self.tableView.contentInset = insets;
    [UIView commitAnimations];
}

美しく機能し、UIView アニメーションを介して完全に構成可能です。

4

1 に答える 1

1

アニメーションのブロックに次のコードを追加すると、修正されるはずです。

UIEdgeInsets insets = self.tableView.contentInset;
insets.top -= 50.f;
self.tableView.contentInset = insets;

self.tableView は UITableView へのアウトレットです

于 2013-05-10T11:25:11.403 に答える