iPhoneXでUICollectionViewがずれてしまいます。
お世話になります。
Objective-CでUICollectionViewを実装しています。
このUICollectionViewは画面一杯に表示し、左右にスクロールするように実装しました。
(カレンダーを実装しているところです。)
この実装はiPhone5sやiPhone8では正常に描画されるのですが、iPhoneXだと、少し上にずれてしまい、NavigationBarにもぐりこんでしまいます。
このような事象に対する対応方法がわからず困っております。
お手数をお掛け致しますが、対応方法が御座いましたらご教示頂けますでしょうか。
以下が、対象のUICollectionViewのソースコード(一部抜粋)となります。
#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