75

親指を水平に表示する UICollectionView コントロールを配置したい (親指の 1 行のみ)。何らかの理由で、UICollectionView はつまみを 44 ピクセル下に押し込むため、「0」の高さは実際には「44」になります。ナビゲーションバーの高さを考慮するために、このスペースを追加している可能性があると思います(私は推測しています)。私の UICollectionView は画面の一部にしかないため、この余白は必要ありません。それを取り除く方法はありますか?

4

9 に答える 9

195

問題は、コレクション ビューのコンテンツ インセットにある可能性があります。self.automaticallyAdjustsScrollViewInsets = NO;View ControllerのviewDidLoadメソッドに追加してみてください。

于 2013-10-16T19:08:36.187 に答える
87

これもストーリーボードで設定できます。

ViewController を選択したことを確認し、[スクロール ビューのインセットを調整する] のチェックを外します。

ここに画像の説明を入力

ただし、この IB/Storyboard メソッドが iOS6 で何をするかはテストしていません。コード メソッドでは、VC がメソッドに応答することを確認する必要があります。

if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
self.automaticallyAdjustsScrollViewInsets = NO;
}
于 2014-01-14T11:54:55.910 に答える
17

追加することがわかりました:

self.edgesForExtendedLayout = UIRectEdgeNone;

ビューコントローラーで UICollectionView を読み込んでいたところ、受け入れられた回答が得られなかったため、問題が解決しました。

この回答を見つけた質問はこちらで見つけることができ、自動調整されたスクロール ビュー インセット、拡張レイアウト、および拡張レイアウトのエッジの違いについて、非常に詳細で興味深い説明を提供します。

一読の価値あり

于 2014-06-18T00:43:09.943 に答える
5

コレクション ビューのデリゲート フロー レイアウトを使用して、この値を 0 に強制することができます。

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
    return UIEdgeInsetsMake(PADDING_TOP, PADDING_LEFT, PADDING_BOTTOM, PADDING_RIGHT);
}

パディングの値を変更します。

于 2013-10-16T18:57:17.670 に答える
1

他の人が言及したように、iOS 11以降viewController.automaticallyAdjustsScrollViewInsetsは廃止されました。私の解決策...

スウィフト 4.2、Xcode 10.1、iOS 12.1:

何らかの理由collectionView.contentSize.heightで、コレクション ビューの解決された高さよりも小さく表示されていました。まず、スーパービューの高さの 1/2 に対して自動レイアウト制約を使用していました。これを修正するために、ビューの「安全な領域」に関連するように制約を変更しました。

これにより、以下を使用してセルの高さを設定して、コレクション ビューを垂直方向に埋めることができましたcollectionView.contentSize.height

private func setCellSize() {
    let height: CGFloat = (collectionView.contentSize.height) / CGFloat(numberOfRows)
    let width: CGFloat = view.frame.width - CGFloat(horizontalCellMargin * 2)

    let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
    layout.itemSize = CGSize(width: width, height: height)
}

スーパービューに対する高さ コレクション ビューのレイアウトが悪い

安全領域に対する高さ 優れたコレクション ビューのレイアウト

于 2019-05-06T19:22:53.557 に答える
1

スウィフト 5.2 / Xcode 11.3

viewController.automaticallyAdjustsScrollViewInsets 

iOS 11 から廃止されました。

私の解決策:

collectionView.contentInsetAdjustmentBehavior = .never
于 2020-05-12T21:52:44.917 に答える
0

self.feedCollectionView.contentInsetAdjustmentBehavior = .neverコレクションビューで使ってみてください。これは実際に私にとってはうまくいきました。

于 2020-03-15T03:32:26.913 に答える
-3

@Sviatoslavの回答と同様に、次のことを試すことができます:

- (void) viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    yourCollectionView.contentOffset = CGPointMake(0, 0);
}
于 2015-07-02T00:30:05.613 に答える