我有具有自定义流程布局的集合视图,我想知道为什么我会有这样的额外空间(右侧):
虽然在这里可能很难注意到,但是您可能会在右侧和单元格之间看到灰色间隙。
这是我如何覆盖标准集合视图流布局以消除水平差距的方法:
@implementation CalendarFlowLayout
- (NSArray *) layoutAttributesForElementsInRect:(CGRect)rect {
NSArray *answer = [super layoutAttributesForElementsInRect:rect];
NSLog(@"layout blck passed");
for(int i = 1; i < [answer count]; ++i) {
UICollectionViewLayoutAttributes *currentLayoutAttributes = answer[i];
UICollectionViewLayoutAttributes *prevLayoutAttributes = answer[i - 1];
NSInteger maximumSpacing = 0;
NSInteger origin = CGRectGetMaxX(prevLayoutAttributes.frame);
if(origin + maximumSpacing + currentLayoutAttributes.frame.size.width < self.collectionViewContentSize.width) {
CGRect frame = currentLayoutAttributes.frame;
frame.origin.x = origin + maximumSpacing;
currentLayoutAttributes.frame = frame;
}
}
return answer;
}
@end
像元大小计算如下:
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
return CGSizeMake(SCREEN_WIDTH/7, (SCREEN_HEIGHT-NAVBAR_HEIGHT-STATUS_BAR_HEIGHT)/6);
}
上面的宏看起来像这样:
#define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width
它已经过测试,并且返回正确的输出。
另外,如果我将宽度设置为SCREEN_WIDTH / 3,则不会有间隙。
如何删除?为什么会这样呢?
最佳答案
375/3
= 125
375/7
= 53.57142857142857
您无法真正点亮半个像素,因此它可能会向下舍入,从而留下空白。确保您的大小是子视图大小的倍数(如果不是,请向最右边的对象添加一个像素)。
关于ios - uicollectionview怪异的差距,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38330238/