【问题标题】:Is it possible to increase the UICollectionViewLayout viewport? (i.e. load +2/-2 cells outside the UICollectionView frame)是否可以增加 UICollectionViewLayout 视口? (即在 UICollectionView 框架之外加载 +2/-2 单元格)
【发布时间】:2014-07-02 21:05:41
【问题描述】:

我有一个使用 UICollectionView 工作的全屏图片库。它是分页的,一切正常,但有一件事我不喜欢。

只有在单元格进入可见视口时才会重复使用它们,并且在分配新图像时会出现闪烁效果(对于当前行为来说是正常的)。

如何指定比当前 UICollectionView 框架稍大的视口,以便加载和重用视图之外的 +1/-1 页面?当它们进入视野时,它们已经被初始化并准备就绪,因此闪烁效果将消失。

谢谢!

【问题讨论】:

    标签: ios uiscrollview uicollectionview uicollectionviewlayout


    【解决方案1】:

    注意:这是假定垂直的,调整为水平

    您可以将框架放大,然后添加一个 contentInset

    CGFloat offset = 40.0; // or whatever works
    
    CGRect yourFrame = yourCollectionView.bounds;
    yourFrame.size.height += offset;
    yourCollectionView.bounds = yourFrame;
    
    CGFloat halfOffset = offset / 2.0;
    yourFlowLayout.sectionInset = UIEdgeInsetsMake(halfOffset, 0, halfOffset, 0);
    

    您必须根据您的代码放置这些,但这就是我们正在做的事情。我们正在稍微扩展您的框架,以便单元重用发生在可见范围之外。通过将插图添加到流布局中,您可以让内容仍然正确对齐。

    【讨论】:

    • 感谢您的回复。这是部分正确的,因为您可以实现我所说的,但对我的情况不太合适。此外,我会将其归入解决方法/hack 类别,因为一旦执行此操作,collectionView 的框架就不能被信任,并且在返回 itemSizes 和重新计算 sectionInsets 时必须考虑此偏移量。我会将此标记为正确,因为我认为目前没有更好的解决方案。
    • 是的,我绝对同意这是一个触摸黑客,我只是没有想出更好的解决方案来解决“闪烁”问题。如果你找到更好的东西,请告诉我!如果您愿意,请随时推迟接受,看看是否有人提出了更好的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    相关资源
    最近更新 更多