iPhoneXのレイアウトで困っていることがあります.

現在開発しているアプリは,iPhoneX用のLaunchScreenImage(1124x2436, 2436x1124)を追加していません.
iPhoneXでは上下に4.7インチ画面(iPhone6/7/8)同等のレイアウトがされることを期待しています.

ある機能で,画面の上部に要素数が横一列に6つあるUICollectionViewを使用しています.

このUICollectionViewが,
・4.7インチ画面(iPhone6/7/8)では意図通りに表示されます.6つのUICollectionViewCellが横一行にぴったり表示される
一方,
・iPhoneXでは二行になってしまい,一行目が空行になってしまいます.タテにスクロールもできてしまいます

画像の説明をここに入力

コードは以下のような感じです(storyboardは使用していません)

View Controller.m

- (void)loadView
{
    self.view = [[FirstView alloc] init];
}

FirstView.m

- (id)init
{
    self = [super init];
    if (self) {
        self.backgroundColor = UIColor.whiteColor;

        [self initGridView];
    }
    return self;
}

- (void)initGridView
{
    _gridView = [[GridView alloc] init];

    [self addSubview:_gridView];
}

- (void)layoutSubviews
{
    [super layoutSubviews];

    [self layoutGridView];
}

- (void)layoutGridView
{
    CGSize parentSize = _gridView.superview.frame.size;

    _gridView.frame = CGRectMake(0, 0, parentSize.width, 48);
}

GridView.m

- (id)init
{
    self = [super initWithFrame:CGRectZero collectionViewLayout:[[UICollectionViewFlowLayout alloc] init]];
    if (self) {
        self.delegate = self;
        self.dataSource = self;

        [self registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([UICollectionViewCell class])];

        self.backgroundColor = UIColor.grayColor;
    }

    return self;
}

#pragma mark -
#pragma mark UICollectionViewDataSource

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(nonnull NSIndexPath *)indexPath
{
    NSString *cellName = NSStringFromClass([UICollectionViewCell class]);
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellName forIndexPath:indexPath];

    if (indexPath.row % 2  == 0) {
        cell.contentView.backgroundColor = UIColor.blueColor;
    }
    else {
        cell.contentView.backgroundColor = UIColor.orangeColor;
    }

    return cell;
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return 6;
}

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CGSize selfSize = self.frame.size;
    CGFloat width = selfSize.width / 6;

    return CGSizeMake(width, 48);
}

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
    return 0;
}

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
    return 0;
}

以下の条件のもとで,上記のUICollectionViewの要素を横一行にピッタリ表示させたいと思っています.

  • 言語はObjective-C.storyboardは使用しない
  • 対応するiOSは "9.3" 以上
  • iPhoneXでは4.7インチ画面相当のレイアウトで表示する(iPhoneX用のLaunchImageは追加しない,アプリの機能・画面が多く,スケジュール的に全ての画面での対応が難しいため)

良い方法があれば教えていただきたいと思います.よろしくお願いします.