UITableView.tableHeaderView の高さを変更するには、tableHeaderView を再設定する必要がある。
self.tableView.tableHeaderView.frame = rect;
self.tableView.tableHeaderView = self.tableView.tableHeaderView; // ★コレ
UITableView.tableHeaderView の高さをアニメーションつきで変更するには以下のようにする:
[UIView animateWithDuration:0.3
animations:^{
self.tableView.tableHeaderView.frame = newFrame;
self.tableView.tableHeaderView.frame = self.tableView.tableHeaderView.frame; // ★コレ
}
completion:^(BOOL finished) {}];
たぶん tableFooterView も同様のやり方で対応できる。