親指を水平に表示する UICollectionView コントロールを配置したい (親指の 1 行のみ)。何らかの理由で、UICollectionView はつまみを 44 ピクセル下に押し込むため、「0」の高さは実際には「44」になります。ナビゲーションバーの高さを考慮するために、このスペースを追加している可能性があると思います(私は推測しています)。私の UICollectionView は画面の一部にしかないため、この余白は必要ありません。それを取り除く方法はありますか?
9 に答える
問題は、コレクション ビューのコンテンツ インセットにある可能性があります。self.automaticallyAdjustsScrollViewInsets = NO;
View ControllerのviewDidLoad
メソッドに追加してみてください。
これもストーリーボードで設定できます。
ViewController を選択したことを確認し、[スクロール ビューのインセットを調整する] のチェックを外します。
ただし、この IB/Storyboard メソッドが iOS6 で何をするかはテストしていません。コード メソッドでは、VC がメソッドに応答することを確認する必要があります。
if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
self.automaticallyAdjustsScrollViewInsets = NO;
}
追加することがわかりました:
self.edgesForExtendedLayout = UIRectEdgeNone;
ビューコントローラーで UICollectionView を読み込んでいたところ、受け入れられた回答が得られなかったため、問題が解決しました。
この回答を見つけた質問はこちらで見つけることができ、自動調整されたスクロール ビュー インセット、拡張レイアウト、および拡張レイアウトのエッジの違いについて、非常に詳細で興味深い説明を提供します。
一読の価値あり
コレクション ビューのデリゲート フロー レイアウトを使用して、この値を 0 に強制することができます。
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(PADDING_TOP, PADDING_LEFT, PADDING_BOTTOM, PADDING_RIGHT);
}
パディングの値を変更します。
他の人が言及したように、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)
}
前
後
スウィフト 5.2 / Xcode 11.3
viewController.automaticallyAdjustsScrollViewInsets
iOS 11 から廃止されました。
私の解決策:
collectionView.contentInsetAdjustmentBehavior = .never
self.feedCollectionView.contentInsetAdjustmentBehavior = .never
コレクションビューで使ってみてください。これは実際に私にとってはうまくいきました。
@Sviatoslavの回答と同様に、次のことを試すことができます:
- (void) viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
yourCollectionView.contentOffset = CGPointMake(0, 0);
}