UICollectionViewCell和Autolayout缩放

时间:2014-05-27 21:17:42

标签: ios autolayout

我已经构建了一个香草UICollectionView,它使用的是我屏幕全尺寸的单元格...

我正在使用的ViewCells在IB中定义,尺寸为320x568,我添加了自动布局约束,允许这些约束在窗口大小改变时缩小。

有没有办法让普通的集合视图流布局检测可用窗口(通话栏,3.5英寸屏幕等)中的更改,并更新视单元默认大小以使它们与可用的匹配房地产,或者这是否需要定制代码来听取分辨率的变化?如果是这样,我需要实现什么方法来捕获窗口大小的这种变化?

1 个答案:

答案 0 :(得分:1)

这可能有效:

将UICollectionViewFlowLayout子类化并覆盖方法(shouldInvalidateLayoutForBoundsChange),如下所示:

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
{
    [self invalidateLayout];
    return YES;
}

这将强制刷新collectionView的边界更改上的布局。 (例如轮换)。

您还必须实现以下UICollectionViewDelegate方法:

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

现在,如果您对collectionsView有很好的约束,那么它的框架应该在窗口更改时更新,并导致布局更新。

让我知道它是否有效:)