使用flowlayout和orientation管理我的UICollectionsView时遇到问题。基本上,当我切换到横向时会出现问题,一些UICollectionViewCells丢失了。一旦我开始滚动,它们就会重新出现。它应该能够显示所有单元格,因为contentSize上有更多的空间。
我甚至尝试过我的布局:
- (BOOL) shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
{
return YES;
}
结果相同。
有人对这个问题有任何想法吗?我在图片中列出了我的布局如何组织以及预期的行为:
要添加更多细节,每个颜色编码的单元格都属于它自己的部分,我正在使用以下方法更改方向更改时向右移动第二部分:
- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect {
NSArray* attributesToReturn = [super layoutAttributesForElementsInRect:rect];
for (UICollectionViewLayoutAttributes* attributes in attributesToReturn) {
NSIndexPath* indexPath = attributes.indexPath;
if (nil == attributes.representedElementKind) {
attributes.frame = [self layoutAttributesForItemAtIndexPath:indexPath].frame;
} else {
NSString *kind = attributes.representedElementKind;
attributes.frame = [self layoutAttributesForSupplementaryViewOfKind:kind atIndexPath:indexPath].frame;
}
}
return attributesToReturn;
}
似乎layoutAttributesForElementsInRect中的项目数量在横向和纵向上完全不同。
答案 0 :(得分:0)
最后弄明白了。当它在风景上时,我将矩形增加到一个很大的尺寸:
- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect {
CGRect *newRect = CGRectMake(0,0, screensize.width, screensize.height);
NSArray* attributesToReturn = [super layoutAttributesForElementsInRect:newRect];
...
}