基本的に、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 アニメーションを介して完全に構成可能です。