フローレイアウトでUICollectionViewを使用しており、autoLayoutの制約に従って適切にセルのサイズを設定するためにcollectionViewを取得しようとしています。セルを自動サイズ設定するUICollectionViewで補助ビューが正しく配置されない
セルは意図したとおりに動作しますが、私はCollectionViewに追加する補足ビューのレイアウトに関する問題に取り組んでいます。
具体的には、私がスクロールした後で、補助レイアウトが最初に「修正」される前に、supplementaryViewの位置が間違っています(つまり、y座標が正しくありません)。
1.設定しcollectionViewLayoutの推定アイテムのサイズAutoLayoutCollectionViewCellの
let collectionView: UICollectionView = {
let layout = UICollectionViewFlowLayout()
layout.estimatedItemSize = CGSizeMake(375, 50.0)
layout.minimumInteritemSpacing = 0.0
layout.minimumLineSpacing = 0.0
let view = UICollectionView(frame: CGRectZero, collectionViewLayout: layout)
view.backgroundColor = UIColor.whiteColor()
view.alwaysBounceVertical = true
return view
}()
2.サブクラス:私は、セルのサイズを設定していますどのように参照するために
は、ここにあります
class AutoLayoutCollectionViewCell: UICollectionViewCell {
override func preferredLayoutAttributesFittingAttributes(layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {
layoutIfNeeded()
layoutAttributes.bounds.size.height = systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height
return layoutAttributes
}
}
この時点で、すべてが意図どおりに機能することに注意してください。
次のステップは失敗するところです。なぜこれが起こるん:
3.私の質問があり、ヘッダ
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
return CGSizeMake(CGRectGetWidth(collectionView.frame), 30.0)
}
ための基準サイズで提供されるものですか。これをどのように修正するには?どのように私はコレクションビュー内の補間ビューを扱うことになっていますか?それはセルのセルフサイズですか?
おかげで多く、それは私のために働きました。 フッターのレイアウトを無効にするには 'context.invalidateSupplementaryElements(ofKind:UICollectionElementKindSectionFooter、 at:[originalAttributes.indexPath])' –