14

テーブルビュー ヘッダー ビューの挿入をアニメーション化する必要があります。ヘッダー ビューがフレームを拡大している間、テーブルの行が下にスライドするようにします。
これまでのところ、私が得た最良の結果は、次のコードを使用することです。

[self.tableView beginUpdates];  
[self.tableView setTableHeaderView:self.someHeaderView];  
[self.tableView endUpdates];

このソリューションの問題は、ヘッダー自体がアニメーション化されず、フレームが拡大されないことです。

したがって、私が得ている効果は、テーブルの行が(必要に応じて)スライドすることですが、ヘッダービューがすぐに表示され、アニメーションでフレームを拡大したいと考えています。

何か案は?

ありがとう。

4

8 に答える 8

26

ヘッダー フレームを に配置しCGRectZero 、アニメーションを使用してそのフレームを設定します

[self.tableView beginUpdates];  
[self.tableView setTableHeaderView:self.someHeaderView];  

[UIView animateWithDuration:.5f animations:^{
  CGRect theFrame = someBigger.frame;
  someHeaderView.frame = theFrame;
}];

[self.tableView endUpdates];  
于 2013-05-13T09:26:03.383 に答える
7

選択した答えは私にはうまくいきませんでした。次のことをしなければなりませんでした:

[UIView animateWithDuration: 0.5f
                 animations: ^{
                     CGRect frame = self.tableView.tableHeaderView.frame;
                     frame.size.height = self.headerViewController.preferredHeight;
                     self.tableView.tableHeaderView.frame = frame;
                     self.tableView.tableHeaderView = self.tableView.tableHeaderView;
                   }];

本当に独特な部分は、これが 1 つのビューで機能するが、同じビュー コントローラー/ビュー階層のサブクラスでは機能しないことです。

于 2015-08-09T18:08:08.553 に答える
1

sで実際のアニメーションを実現する決定的かつ適切な方法を見つけましたtableHeaderView!

• まず、 を使用している場合は、システムをヘッダー ビュー内Autolayoutに保持します。MarginXcode 8 では (ついに!) 可能になりました。ヘッダーのサブビューに制約を設定しないでください。適切なマージンを考えて設定する必要があります。

• 次に と を使用beginUpdatesします、アニメーション ブロックendUpdatesに入れます。endUpdate

// [self.tableView setTableHeaderView:headerView]; // not needed if already there
[self.tableView beginUpdates]; 
CGRect headerFrame = self.tableView.tableHeaderView.bounds;
headerFrame.size.height = PLAccountHeaderErrorHeight;

[UIView animateWithDuration:0.2 animations:^{
    self.tableView.tableHeaderView.bounds = headerFrame;

    [self.tableView endUpdates];
}];

注: iOS10 でのみ試しました。iOS9 シミュレーターがダウンロードされたら更新を投稿します。

編集

残念ながら、iOS9 と iOS10 では機能しません。ヘッダー自体は高さを変更しませんが、ヘッダーのサブビューは、ヘッダーの境界が変更されたかのように移動するように見えます。

于 2016-09-16T14:38:48.440 に答える