在我的情况下,我想要完全删除UICollectionViewCell
之间的任何空格。在iPhone 5中,它的工作正常但iPhone 6及更高版本。每次我滚动或在初始加载UICollectionView
时为不同的行添加空白空间。我知道浮动值可能有所不同。例如8.88888881和8.88888881。
绿线是空格(collection view
背景色)
每次我滚动此行更改位置。
我的代码:
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(nonnull NSIndexPath *)indexPath
{
CGFloat widthAndHeight = [self widthAndHeightForActiveCollectionViewItem];
if (widthAndHeight < 22) {
widthAndHeight = 22;
}
CGFloat result = lroundf(widthAndHeight * self.venueLayoutZoom);
return CGSizeMake(result, result);
}
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
return 0;
}
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsZero;
}
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
return 0;
}
对于UICollectionViewFlowLayout
,我使用this,因为我需要向两个方向滚动。每次大小正确且没有任何浮动值。我总是试图修改UICollectionView
宽度。例如:我在一行中有29个元素,我希望每个元素宽度为11像素。然后我将宽度设置为319.
第二个问题是: 我想创建只有正确的底部圆角的单元格,如。但iPhone 6及以上版本再次向我显示错误的结果,例如。 (看看这一行在上面)。我想要一个平滑的颜色。但是当我向左/向右滚动时,它可能是正常的。
UICollectionViewCell
代码:
- (void)prepareForReuse
{
[self.circularLayer removeFromSuperlayer];
}
- (void)awakeFromNib
{
[super awakeFromNib];
[self allocAndAddLayers];
}
- (void)allocAndAddLayers
{
self.circularLayer = [CALayer layer];
[self.layer addSublayer:self.circularLayer];
}
- (void)layoutSubviews
{
[self updateRoundedCorners];
}
- (void)updateRoundedCorners
{
self.circularLayer.bounds = bounds;
self.circularLayer.position = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));
CGRect rect = self.circularLayer.bounds;
CGFloat radius = CGRectGetWidth(rect) / kVenueLayoutCellDefaultCornerRadiusDivider;
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:corners cornerRadii:CGSizeMake(radius, radius)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = bounds;
maskLayer.path = maskPath.CGPath;
self.circularLayer.mask = maskLayer;
}