UICollectionView
にはセルがほとんどなく、回転すると行と列の数が変わります。私はこれでこれを達成することができます:向き変更時のコレクションビューのセルレイアウトを適切に管理する
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
{
if UIDevice.currentDevice().orientation.isPortrait.boolValue{
return CGSizeMake((collectionView.frame.size.width-2)/2, (collectionView.frame.size.height - 4)/3)
}
else{
return CGSizeMake((collectionView.frame.size.width-4)/3, (collectionView.frame.size.height - 4)/3)
}
}
デバイスが回転するまでは、すべてうまくいきました。回転のために、私はこの
override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) {
myCollectionView!.reloadData()
}
などのコレクションビューを再読み込みしている最終的な結果は、thisのように見えます。(悪いGIFのため申し訳ありませんが)
細胞の所望の数が達成されます。しかし、あなたがリンクから見ることができるように、短時間の間、回転が起こったときに気付くギャップがあります。この効果は望ましくない。 UICollectionView
を何度も何度もロードし続けてレイアウトを修正するのは悪いことです。私は欲しいものを達成することができますが、適切な方法で達成することはできません。いくつかの専門家のアイデアが評価されます。ここで
私はUICollectionViewFlowLayoutを持っていません。 UICollectionViewの 'collectionViewLayout'デリゲートメソッドを実装しました。その通知は 'didRotateFromInterfaceOrientation'と全く同じです。そしてcollectionView!.collectionViewLayout.invalidateLayout() は私のためには機能しませんでした。 UICollectionViewFlowLayoutをどのように保守したかをコードで共有することができますか? –
このcollectionViewLayoutは、向きに応じて行数と列数を変更しないと確信しています。私はこれが私が探しているものではない細胞のための固定CGSizeを提供すると思う。 –