UIViewController
に通常のUITableView
があり、フルスクリーンに制限されています。このtableViewには、カスタムインタラクティブtableHeaderView
があります。 tableHeaderViewはサイズが動的で、独自に展開されます。 headerViewにはtextFieldがあり、textFieldのフォーカスに応じて独自のサイズが変更されます。UITableViewのアニメーション中にセルが消えています
tableHeaderViewのサイズを変更すると、画面の下部にあるセルが常に正しくアニメーション化されないという問題があります。 アニメーションブロック内にlayoutIfNeeded()
の後にtableView.beginUpdates()
とtableView.endUpdates()
と呼んでいます。これは行われなければならない、またはセルは動的サイズに全く追従しない。
私はこのgifを作成しました。アニメーション中の下部のセルを特に見てください。私はアニメーションをかなり遅くしていますので、問題を見るのは簡単です。
投機:のtableViewは、アニメーションが開始されるとすぐにcellForRow:indexPath:
のために呼び出し、何らかの形で全体のtableViewは、アニメーションの後になります状態何かを見つけ、不要な細胞を除去するようにそれは私には思われます、アニメーションがまだ完成していないにもかかわらず。 同じように、ヘッダーを折りたたむとき、一番下のセルは、すでにロードされているセルと同じ方法でアニメートされません。彼らは別のアニメーションでアニメーション化されています。
どうしてですか?これは予防可能ですか?
編集:
self.navigationController?.setNavigationBarHidden(isEditing, animated: true)
var frame = tableHeaderView.frame
frame.size.height = tableHeaderView.headerHeight(forEditing: isEditing)
UIView.animate(withDuration: 0.3, animations: {
if isEditing{
let point = CGPoint(x: 0, y: -self.topLayoutGuide.length)
self.tableView.setContentOffset(point, animated: false)
}
tableHeaderView.frame = frame
tableHeaderView.layoutIfNeeded()
self.view.layoutIfNeeded()
self.tableView.beginUpdates()
self.tableView.endUpdates()
}) { [weak self](completed:Bool) in
//Do stuff
}
コードを表示できますか? – jalone
ストーリーボードで - シーンを選択 - >アトリビュートインスペクターを表示 - >上のバーの下に、上のバーの下にアンラインします。 – Pavankumar
@Sti:コードを共有する必要があります。 – Poles