UICollectionView iOS8错误偏移
令人惊讶的是,更新到UICollectionView iOS8错误偏移,ios8,uicollectionview,Ios8,Uicollectionview,令人惊讶的是,更新到iOS8后,我的应用程序的行为与iOS7中的不一样。 特别是,我用UICollectionView制作了一个日历。在iOS7 fine中,月份单元格显示正确。但是在iOS8。。。 我看到一个向上的偏移,就是细胞向上移动…我不明白,真的。。。。代码非常简单 - (void)viewDidLoad { [super viewDidLoad]; UINib * nib = [UINib nibWithNibName:@"AgendaYearCollectionCell"
iOS8
后,我的应用程序的行为与iOS7
中的不一样。
特别是,我用UICollectionView
制作了一个日历。在iOS7 fine中,月份单元格显示正确。但是在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。
苹果改变了什么?您的收藏视图顶部偏移量为负值。提供更多的代码可能会有所帮助,但是让我们先试试这个 你打过电话:
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
insetForSectionAtIndex:(NSInteger)section
我不会叫它,除非你想为不同的部分插入不同的插图。看起来你只有一个部分。我将使用流布局对其进行配置:
flowLayout.sectionInset = CGSizeMake(40.0, 2.0, 50.0, 60.0);
我建议放弃对iOS 7的支持,所有使用iOS 7的设备都可以升级到8
如何计算所有屏幕/设备的值
任何iPad的偏移量都应该相同。即使苹果将推出更大屏幕的iPad,你的屏幕偏移量也将是一样的。如果您想要支持iPhone的通用应用程序,您可以进行设备状态检查,并根据设备模式分配不同的号码
而且,它可能是顶部的东西。你弄乱导航栏了吗?从图片上看不清楚。我现在也有类似的问题。对我来说,细胞的内容物似乎向下移动了。我在每个单元格中都有一个UIImageView,与在iOS 7/6上运行或在iOS 8设备上使用app store上的现有应用程序相比,图像显示向下大约20点-差异可能是编译时使用的SDK(iOS 7 SDK与新iOS 8 SDK)。如果我有足够的内容可以在集合视图中滚动,任何后续刷新的单元格看起来都正常。