メモ。覚えていたらあとで説明を書く。ケアレスミスしてた。
UICollectionViewの初期表示時にズレる
UICollectionViewを幅MAXで使わない時に初期表示時にズレるのか?
UITableViewCellの中にUICollectionViewを入れて使っている。
UICollectionView横スクロールしている。
pagingを有効にしていて、1ページ目から表示するようにしたかった。
UICollectionViewのcontentOffsetで下記のように指定していた。
fileprivate func updateDisplay() { let w = collectionView.frame.width collectionView.contentOffset = CGPoint(x: w, y: 0) }
結果
tableView(_, cellForRowAt:)
でUITableViewCellを生成して、UICollectionViewに表示するためのデータソース(なんらかの配列)を渡すけれど、AutoLayoutのレイアウト調整前なので、collectionView.frame.width
の値が0
になっていた。
collectionViewの横幅の値を使用する前にlayoutIfNeeded()
を呼ぶ必要があった。
fileprivate func updateDisplay() { collectionView.layoutIfNeeded() let w = collectionView.frame.width collectionView.contentOffset = CGPoint(x: w, y: 0) }
2019/09/14追記
同じ現象でハマった件について別々の記事で書いてたのに気づいた。