ここでは、XIBファイルなしの自動レイアウトでカスタムUICollectionViewReusableViewを処理する方法を示します。
referenceSizeForHeaderInSection
デリゲートメソッドを実装します。
- ヘッダービューとして使用するビューをインスタンス化します。
- 点滅を避けるため、可視性を非表示に設定します。
- ビューをコレクションビューのスーパービューに追加します。
- 自動レイアウトを使用してレイアウトを設定して、ヘッダーの予想される視覚的結果と一致させます。
- 起動
setNeedsLayout
とlayoutIfNeeded
- スーパービューから
注意ビューを削除します。私は、このソリューションの大ファンではない、それはcollectionviewのスーパーにするたびにカスタムビューを追加すると、計算を実行します。私はパフォーマンスの問題に気がつかなかった。
注意2:私は一時的な解決策として扱い、出版されると自己サイジング補足画面に移行します。
私は自動レイアウトの目的でPureLayoutを使用しています。
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
let header = CustomHeaderView()
header.isHidden = true;
self.view.addSubview(header)
header.autoPinEdge(toSuperviewEdge: .leading)
header.autoPinEdge(toSuperviewEdge: .trailing)
header.autoPin(toTopLayoutGuideOf: self, withInset: 0)
header.setupHeader(withData: self.data)
header.setNeedsLayout()
header.layoutIfNeeded()
header.removeFromSuperview()
return header.frame.size
}
http://stackoverflow.com/a/33696385/6064629多分それはあなたを助けます。 – Himanshu
ありがとう@himanshu。なぜなら、その解決策は基本的に 'UICollectionReusableView'の余分なコピーをインスタンス化し、直後にそれをゴミ箱に入れてしまうからです。 –
@KelvinLauあなたは何かを把握することができましたか? XIBファイルが必要なので、私は提供されたソリューションの大ファンではありません。 – Michael