Interface Builderにこの配置があり、すべてのプロパティがゼロに設定されています。
ただし、デバイスとシミュレータの両方で実行すると、次のように表示されます
セルの上のスペースはどこから来たのですか?
だから私はこのようなコードでUICollectionViewFlowLayoutのこれらのプロパティを設定しようとします
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.headerReferenceSize = CGSizeZero;
layout.footerReferenceSize = CGSizeZero;
layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
layout.minimumInteritemSpacing = 0;
layout.minimumLineSpacing = 0;
layout.itemSize = CGSizeMake(103, 119);
self.calendarView.collectionViewLayout = layout;
しかし、私は運がありません。
どうすればそのスペースを取り除くことができますか?ありがとう。
UICollectionViewはcontentInset
プロパティを持つUIScrollViewクラスの子孫であり、-20のトップインセットを設定すると問題が修正されます
[self.calendarView setContentInset:UIEdgeInsetsMake(-20, 0, 0, 0)];
ただしこの問題はUIViewControllerのautomaticallyAdjustsScrollViewInsets
プロパティに起因しています。ドキュメント別:
デフォルト値はYESです。これにより、ステータスバー、ナビゲーションバー、ツールバーまたはタブバーによって消費される画面領域に応じて、View Controllerがスクロールビューのインセットを調整できます。スクロールビューのインセット調整を自分で管理する場合は、NOに設定します。
そのため、ステータスバーの調整済みコンテンツインセットを取得します。結果の画像で一致しない値を手動で設定するよりも、自動調整を無効にする方が適切です。
[self setAutomaticallyAdjustsScrollViewInsets:NO];
ここにSwiftにいくつかの調整を加えた場合の答えがあります:
ビューのごく一部を占めるコレクションビューがあります。私が使用した:
self.automaticallyAdjustsScrollViewInsets = false
レイアウトを台無しにしていた上部のスペースを削除します。このコードは、私にとってはうまくいきませんでした。
self.paperCollectionView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0)
そして、これもしませんでした:
self.paperCollectionView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0)
しかし、それは、UICollectionViewControllerを使用しておらず、単にUICollectionViewを使用しているためかもしれません。
一緒に行くこともできます
[self.calendarView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)];
[self setAutomaticallyAdjustsScrollViewInsets:NO];
デフォルトでは、コレクションビューに追加されたコレクションビューヘッダーのスクロールスペースがあり、デバイスの問題を反映する可能性があるため、上から-20を追加する必要はありません。
スウィフト3:
self.automaticallyAdjustsScrollViewInsets = false
この答えは奇妙ですが、Interface Builderで作業しており、Navigation ControllerのルートView ControllerであるTab Bar Controllerの制御下にあるView ControllerにCollection Viewが埋め込まれている場合に機能します。
ツールバーがコレクションビューの上にある場合、プロトタイプのコレクションビューセルの上部からコレクションビューまでのスペースはありません。ツールバーがない場合、またはツールバーがコレクションビューの下にある場合、コレクションビューの上部とコレクションビューセルの間にスペースがあります。これは、ストーリーボードプレビューとアプリの実行中の両方に当てはまります。同じタイプのことは、テーブルビューでも発生します。
iOS 11ではautomaticallyAdjustsScrollViewInsets
の使用が廃止されたため、collectionView.contentInsetAdjustmentBehavior = .never
が推奨されます。