56284


お世話になります。

Objective-CでUICollectionViewを実装しています。  
このUICollectionViewは画面一杯に表示し、左右にスクロールするように実装しました。  
（カレンダーを実装しているところです。）

この実装はiPhone5sやiPhone8では正常に描画されるのですが、iPhoneXだと、少し上にずれてしまい、NavigationBarにもぐりこんでしまいます。

このような事象に対する対応方法がわからず困っております。  
お手数をお掛け致しますが、対応方法が御座いましたらご教示頂けますでしょうか。

以下が、対象のUICollectionViewのソースコード（一部抜粋）となります。

[code]

    #import "Sample.h"
    #import "CalendarCell.h"
    
    @interface Sample ()<UICollectionViewDataSource, UICollectionViewDelegate> {
        // カレンダーのViewを表示するコレクションView
        UICollectionView *coll;
    }
    
    @end
    
    @implementation Sample
    
    
    - (void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        [self setUi];
    }
    
    - (void)setUi {
        UIView *view = [[UIView alloc] init];
        view.frame = CGRectMake(0, [UIApplication sharedApplication].statusBarFrame.size.height + self.navigationController.navigationBar.frame.size.height, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);
        [self.view addSubview:view];
    
        UICollectionViewFlowLayout* flowLayout = [[UICollectionViewFlowLayout alloc] init];
        flowLayout.itemSize = CGSizeMake([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);
        [flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
    
        coll = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height) collectionViewLayout:flowLayout];
        coll.backgroundColor = VIEW_BACK_COLOR;
        coll.pagingEnabled = true;
        [coll setShowsVerticalScrollIndicator:false];
        [coll setShowsHorizontalScrollIndicator:false];
        [view addSubview:coll];
    
        [coll registerClass:[CalendarCell class] forCellWithReuseIdentifier:@"cell"];
    
        coll.delegate = self;
        coll.dataSource = self;
    }
    
    #pragma mark - UICollectionViewDataSource and UICollectionViewDelegate
    
    -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
        return 1;
    }
    
    -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
    {
        return 12;
    }
    
    - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
    {
        CalendarCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
        return cell;
    }
    
    - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
    {
        return 0.0f;
    }
    
    - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
    {
        return 0.0f;
    }
    
    @end
    
[/code]


CC BY-SA 4.0
2019-06-27T02:11:15.743
56128
2019-07-01T06:50:50.707
2019-06-27T02:49:35.697
33025
33025
question
ios objective-c uicollectionview uicollectionviewcell iphone-x
iPhoneXでUICollectionViewがずれてしまいます。


みなさま、様々なご意見有難う御座いました！  
色々と試した結果、以下を追加することで潜り込まなくなりました！！

[code]

    if (@available(iOS 11.0, *)) {
        coll.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    }
    
[/code]


CC BY-SA 4.0
2019-07-01T06:50:50.707
56284
2019-07-01T06:50:50.707
33025
56128
answer