令人惊讶的是,更新到iOS8
后,我的应用与iOS7
中的行为不同。
特别是,我用UICollectionView
创建了一个日历。在iOS7正常,月份单元格正确显示。但在iOS8
......
我看到顶部偏移,细胞向上移动......我不明白,真的......代码非常简单。
- (void)viewDidLoad
{
[super viewDidLoad];
UINib * nib = [UINib nibWithNibName:@"AgendaYearCollectionCell" bundle:[NSBundle mainBundle]];
[self.collectionView registerNib:nib forCellWithReuseIdentifier:agendaYearCellIdentifier];
[self.collectionView setDelegate:self];
[self.collectionView setDataSource:self];
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.minimumInteritemSpacing = 0;
layout.minimumLineSpacing = 1;
[self.collectionView setCollectionViewLayout:layout];
}
该集合不可滚动。如果我使它可滚动,我可以滚动并查看第一行的单元格。但我不想要一个可滚动的集合。 我认为问题出现在插图中。事实上,如果我玩:
- (UIEdgeInsets)collectionView:
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
return UIEdgeInsetsMake(40, 2, 50, 60);
}
我最终可以再次获得第一行。但是如何计算所有屏幕/设备的值?我的应用程序仅适用于风景,仅适用于iPad。 Apple改变了什么?
答案 0 :(得分:0)
您的集合视图具有负顶部偏移量。提供更多代码可能有所帮助,但让我们先尝试一下。
您致电:
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
insetForSectionAtIndex:(NSInteger)section
除非你想为不同的部分设置不同的插图,否则我不会这样称呼它。看起来你只有一个部分。我将使用Flow Layout配置它:
flowLayout.sectionInset = CGSizeMake(40.0, 2.0, 50.0, 60.0);
我建议放弃iOS 7支持,所有iOS 7设备都可以升级到8。
如何计算所有屏幕/设备的值?
对于任何iPad都应该是相同的偏移量。即使Apple将iPad发布更大的屏幕,你的偏移也是一样的。如果您想要支持iPhone的通用应用程序,您可以根据设备范例进行设备状态检查并分配不同的数字。
此外,它可能是顶部的东西。你搞乱了导航栏吗?它没有从图片中清楚。