UICollectionView
当设备从纵向变为横向时,有没有办法调整单元格的大小?使用新的 iOS 6 自动布局?我不想重新加载整个UICollectionView
.
如果有人想知道,我找到了解决方案。解决方案:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
if ([indexPath row] == 0 && ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait || [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown )){
return CGSizeMake(768, 400);
}else if ([indexPath row] == 0 && ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft || [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight)){
return CGSizeMake(1024, 400);
}
return CGSizeMake(255, 200);
}
因此方法 sizeForItemAtIndexPath 使用 CGSize 为每个单元格指定宽度和高度。您需要做的就是检测单元格的方向,并返回您想要的特定高度。请记住,出于设计目的,我只更改了一个单元格。
之后,我在以下位置调用了 [invalidate layout]:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
它基本上再次获得了每个单元格的布局,也不会重新加载 UICollectionView 的数据!