gpt4 book ai didi

ios - UICollectionViewFlowLayout minimumInteritemSpacing 错误?

转载 作者:行者123 更新时间:2023-12-01 18:24:38 24 4
gpt4 key购买 nike

经过一番摆弄后,我开始怀疑 UICollectionViewFlowLayout 的间距代码中存在错误。

问题很简单:我想在屏幕上显示五个按钮,我希望按钮之间的间距为 1 pt(视网膜显示屏上为 2 像素)。为了实现这一点,我将 minimumInteritemSpacing 设置为 1.0,将单元格宽度设置为 159.5 pt,这样两个单元格的总和将达到 319 pt,从而为空间留下一个点。当我希望第三个按钮成为 View 的全宽时出现问题,因为流布局导致间距为 0.5 pt,尽管已被告知保持最小值为 1.0。 (见截图1)

right layout wrong spacing

设置间距的代码发生在

-(void)viewDidLoad
{
UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout *)[[self collectionView] collectionViewLayout];
[flowLayout setMinimumInteritemSpacing:1.0];
[flowLayout setMinimumLineSpacing:1.0];
}

和单元格的大小
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 2) {
return CGSizeMake(320 ,151);
}
return CGSizeMake(159.5, 151);
}

另一方面,如果我没有使第三个按钮全宽,则间距的行为与预期的一样,尽管它不应该影响不同行的项目间间距。 (截图2)

right spacing wrong layout

应该注意的是,在 Storyboard中设置了 CollectionView、CollectionViewCell 和 UILabel,并且我已经确保屏幕截图中可见标签的框架小于单元格的宽度,我也尝试过完全删除标签但是结果相同。

我不明白为什么会发生这种情况,除非它是流布局代码中的错误,并且我在将其作为错误提交之前在这里寻找健全性检查。

最佳答案

正如评论中提到的,必须在这里描述问题和随后的一些想法使我意识到,虽然 minimumInteritemSpacing 是一个 CGFloat ,但传递它的小数值是没有意义的,当你这样做时它的行为是不明确的。这是因为,在点与像素比率为 1:1 的设备上,没有半个像素这样的东西。碰巧的是,在某些情况下,它的行为符合我的预期,从而使我对真正的(而且相当明显的)问题视而不见。

希望阅读本文可以帮助其他人快速意识到错误。

关于ios - UICollectionViewFlowLayout minimumInteritemSpacing 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14605125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com