ios – 舍入集合视图的浮点值时出错

我想在我的设备上摆脱一个像素问题.我正在设计一个如下所示的日历

我正在为此目的使用UICollectionViewCell

- (UIEdgeInsets)collectionView:
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
   return UIEdgeInsetsMake(0,0);  // top,left,bottom,right
}

- (CGSize)collectionView:(UICollectionView *)collectionView
                  layout:(UICollectionViewLayout *)collectionViewLayout
  sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat collectionViewWidth = (CGRectGetWidth(collectionView.frame) / 7);
    CGFloat collectionViewHeight = 48;
    return CGSizeMake(collectionViewWidth,collectionViewHeight);
}

问题是,如果我增加宽度甚至0.0000001点,那么每行绘制的单元格数量是6而不是7.我已尝试增加UIEdgeInset(0.00001),但这是同样的问题.流布局的属性已正确设置.

layout.minimumInteritemSpacing = 0.0f;
 layout.minimumLineSpacing = 0.0f;

如何在不留空隙的情况下使单元尺寸保持一致?电池的实际宽度为53.571428571428569(375/7).如果我将值四舍五入到53.58,那么我得到以下视图

解决方法

这是一个非常受欢迎的问题,解决它的最快方法是使用collectionViewWidth%7 == 0获取单元格大小

例如你的collectionViewWidth == 320.Cell == 320/7 == 45.7142857,你只需要使用collectionViewWidth == 322,你的问题就解决了,因为cell == 46

那个增加不明显的collectionViewWidth U有两个选项

>首先,如果您使用collectionViewWidth == screenWidth,只需对齐中心,边缘将隐藏屏幕限制>如果你收集ViewWidth< screenWidth,使用UIview到collectionView的容器,并使用clipTobounds,edge将隐藏容器限制.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...