私のuicollectionviewデリゲートにこのコードがあります。基本的には、colectionviewのサイズに基づいてセルのサイズを設定することです。UICollectionViewのサイズ変更後にUICollectionViewCellのサイズを変更する
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
CGFloat ratio = 200.0/280.0; // w/h
CGFloat cellWidth = (collectionView.frame.size.width-50)/4.0;
CGFloat cellHeight = cellWidth/ratio;
CGSize cellSize = CGSizeMake(cellWidth, cellHeight);
return cellSize;
}
collectionViewを再ロードせずにcollectionViewフレームを変更した後、このデリゲートを強制的に実行するにはどうすればよいですか?私が考えている方法の1つは、表示されているすべてのセルをループすることによって手動でこの機能を呼び出すことですが、それほどシンプルなものには重すぎるようです。
HELLLPPPPPP
あなたの質問に既に追加した最も簡単な解決策は、collectionViewを再読み込みすることです。 –
デリゲートを強制するのではなく、デリゲートのデータをコピーして関数に追加することができます。デリゲートの関数を呼び出し、どこに呼び出すかを指定します。あなたは何を言っていますか? – User511
コレクションビューのフレームを変更した後、この行を入力して試してみてください。 yourCollectionView.dataSouce = self; –