UICollectionViewCell大小和旋转

时间:2014-02-11 15:09:37

标签: uiview uicollectionview autolayout uicollectionviewcell

在我的UICollectionView我有一个应该占用设备整个宽度的单元格。以下是我如何设置项目的大小:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    return CGSizeMake(self.view.bounds.size.width, 120);
}

我发现在旋转时,单元格的宽度不会改变。我可以使用[collectionView.collectionViewLayout invalidateLayout]中的didRotateFromInterfaceOrientation:来解决此问题,但这并不令人满意。如果用户在我的应用中的另一个屏幕中旋转怎么办?我需要将其添加到viewWillAppear。如果应用程序背景时旋转发生怎么办?现在我需要为UIApplicationDidBecomeActiveNotification通知添加它。

最让我困惑的是,在同一个集合视图中,我的自定义标头需要。以下补充意见正确地重新定义了方向变化:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section
{
    return CGSizeMake(self.view.bounds.size.width, 40);
}

我哪里错了?如何让单元格自动重新调整大小以填充集合视图的宽度?

1 个答案:

答案 0 :(得分:0)

我知道有点晚了但是你可以通过子类化流程布局和添加来解决这个问题吗?

 - (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {
  return TRUE;
}