3

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 的数据!

4

0 回答 0