水平サイズ クラスが変更されたときに、セルのレイアウトを調整する際に問題が発生します。
私のセルにはstackViewがあり、軸をコンパクトサイズクラスでは水平、レギュラーでは垂直にします。
これは私が試したものです:
override func traitCollectionDidChange(previousTraitCollection: UITraitCollection?) {
if previousTraitCollection?.horizontalSizeClass != traitCollection.horizontalSizeClass {
self.collectionView?.reloadData()
}
}
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! MyCollectionViewCell
switch traitCollection.horizontalSizeClass {
case .Compact:
cell.stackView.axis = .Horizontal
default:
cell.stackView.axis = .Vertical
}
return cell
}
しかし、その結果、すべてのセルがレイアウトを更新するわけではありません。下の gif を参照してください。
EDIT:cellForItem
セルクラス自体に
印刷することで、軸が正しく変更されることを確認しました。したがって、セルが再描画されていないことが問題のようです..
これを解決する方法はありますか?