我已经构建了一个香草UICollectionView,它使用的是我屏幕全尺寸的单元格...
我正在使用的ViewCells在IB中定义,尺寸为320x568,我添加了自动布局约束,允许这些约束在窗口大小改变时缩小。
有没有办法让普通的集合视图流布局检测可用窗口(通话栏,3.5英寸屏幕等)中的更改,并更新视单元默认大小以使它们与可用的匹配房地产,或者这是否需要定制代码来听取分辨率的变化?如果是这样,我需要实现什么方法来捕获窗口大小的这种变化?
答案 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有很好的约束,那么它的框架应该在窗口更改时更新,并导致布局更新。
让我知道它是否有效:)