これは黄色のシンプルなUICollectionViewです
赤い矢印はセルの幅を設定します。 (TBC:ピンクのセルをクリックします。「サイズ」で「デフォルト」を選択すると、赤い矢印で設定したものがセルのサイズになります。)
たとえば、直立したiPhoneの場合、幅を320に設定します。
しかし、これは狂っているようです...確かにセル幅を設定できますICollectionViewの幅に基づいて?
ビュー自体の自動サイズ変更に問題はありません。
それはうまくいきます。
しかし、CELLの幅を「ビューと同じ」に設定できないのはおかしいようです。コードで手動で設定する必要があるとは考えにくいですか?
TBCつまり、ニキータが指摘するように、
-(CGSize) collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return self.view.frame.size;
}
(実際には、通常これも必要です...)
-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout*)collectionViewLayout
insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(0,0,0,0); //t,l,b,r
}
実際、コードでそれをしなければなりませんか?!ストーリーボードでは、オートレイアウトなどでそれを行う方法はありませんか?!
私はあなたが見てみる必要があると思う
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
of UICollectionViewLayout
では、向きと現在のフレームに基づいてサイズを設定できます。
実際、コードでこれを行う必要があるように思えます。
これを行う簡単な方法があります。 Swiftコード。1つのアイテムの幅が必要で、この例ではセルの高さが64ポイントで、サイドマージンに8ポイントが必要で、最後にcollectionViewがUICollectionViewの名前であると仮定します。 。
これをviewDidLoadに挿入します。
let layout = collectionView?.collectionViewLayout as! UICollectionViewFlowLayout
layout.itemSize = CGSize.init(width: (UIScreen.main.bounds.width - 16), height: 64.0)
これにより、すべてのセルがデフォルトでそのサイズに設定されます。他の回答で述べたように、UICollectionViewLayoutまたはUICollectionViewFlowLayoutをサブクラス化すると、個々のセルをオーバーライドできます。しかし、単に動作のようなテーブルビューを増やしたい場合は、これでうまくいくはずです。