-1

私の目標は、実行時に UITableView セクション ヘッダーの高さを変更することです。もっと具体的に言ってみましょう。デフォルトの高さは 44 ですが、一番上に触れる前にスクロールすると、高さは 64 になりますUITableViewHeaderFooterView

私は試した

var frame = sectionHeader.frame
frame.size.height = 64
sectionHeader.frame = frame

そしてまた

tableView.sectionHeaderHeight = 64

しかし、私には何もうまくいきません。誰でもこの問題に光を当てることができますか?

4

3 に答える 3

1
  1. 自動レイアウト変更フレームを直接使用する場合は機能しません
  2. テーブルビュー セクション ヘッダーを変更するには、デリゲート メソッドを実装し、変更後にデータをリロードする必要があります

オプション func tableView(_ tableView: UITableView, heightForHeaderInSection セクション: Int) -> CGFloat

于 2016-07-31T16:29:28.893 に答える
0

セクション ヘッダーのみを更新するためのパブリック API がないため、テーブル ビューのセクション全体をリロードする必要があると思います。

self.isOnTop = true // or false
tableView.reloadSections(NSIndexSet(index: 0), withRowAnimation: .None)

そして、適切なデリゲート メソッドからの戻り値を変更するプロパティを変更します。

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    isOnTop ? 44 : 64
}

リロードせずにレイアウトを更新できる次の方法を試すこともできます。

tableView.beginUpdates()
tableView.endUpdates()

または、テーブルビューの動作をサポートするコレクション ビュー ソリューションに移動します: https://github.com/jamztang/CSStickyHeaderFlowLayout

于 2016-07-31T16:42:37.190 に答える