を実装しようとしていますCollectionView
。Autolayout を使用すると、セルのサイズは変更されませんが、配置は変更されます。
今私はむしろそれらのサイズを変更したいです。例えば
var size = CGSize(width: self.view.frame.width/10, height: self.view.frame.width/10)
私は設定してみましたCellForItemAtIndexPath
collectionCell.size = size
しかし、うまくいきませんでした。
これを実現する方法はありますか?
編集:
どうやら、回答によって CollectionView の幅と高さだけが変わるようです。制約に矛盾がある可能性はありますか? それについて何かアイデアはありますか?
ベストアンサー1
このメソッドを使用して、カスタム セルの高さの幅を設定します。
このプロトコルを必ず追加してください
UICollectionViewDelegate
UICollectionViewDataSource
UICollectionViewDelegateFlowLayout
使用している場合スイフト5またはエックスコード11後で適切に動作させるには、ストーリーボードを使用するEstimate Size
ように設定する必要がありますnone
。これを設定しないと、以下のコードは期待どおりに動作しません。
Swift 4以降
extension YourViewController: UICollectionViewDelegate {
//Write Delegate Code Here
}
extension YourViewController: UICollectionViewDataSource {
//Write DataSource Code Here
}
extension YourViewController: UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: screenWidth, height: screenWidth)
}
}
オブジェクティブC
@interface YourViewController : UIViewController<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSizeMake(CGRectGetWidth(collectionView.frame), (CGRectGetHeight(collectionView.frame)));
}