【问题标题】:How to Have Floating Title View in Scrollable Collection View Keep Its Y Position?如何让可滚动集合视图中的浮动标题视图保持其 Y 位置?
【发布时间】:2014-11-15 22:36:46
【问题描述】:

目标是 iOS 7+ iPhone 4s、5、5s、6、6+

按照设计,我有一个滚动视图,其中包含一个仅显示一行单元格的集合视图。

使用此设置,效果很好。用户可以从右到左或上下滚动并比较单元格的内容。

滚动视图支持上/下滚动。集合视图支持左右滚动。

在每个集合视图单元格的顶部,我有一个 titleView(显示为“Some Title”)。当用户上下滚动时,我希望每个单元格的 titleView 始终浮动在屏幕顶部。 (见下图)

我已经接近答案了。我使用 scrollViewDidScroll 并将 titleView.origin.y 设置为 scrollView.contentOffset.y。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
{
    for (CVKRecipeCollectionViewCell *cell in self.collectionView.visibleCells) {
        CGRect myFrame = cell.titleView.frame;

        myFrame.origin.y = scrollView.contentOffset.y;

        cell.titleView.frame = myFrame;
    }
}

当用户上下滚动时有效。但是,当用户向右/向左滚动时,titleView 会将自身重置回其原始 y 位置 0。

如何将 titleView 保持在我在 scrollViewDidScroll 中指定的 y 位置?

显示问题的代码位于: https://bitbucket.org/finneycanhelp/kata_collection_view_and_flow_layout/branch/floating-title-view

CVKMainViewController 有 scrollViewDidScroll 方法。

【问题讨论】:

    标签: ios objective-c uiscrollview uicollectionview uicollectionviewcell


    【解决方案1】:

    答案是在scrollViewDidScroll方法中使用scrollView的contentOffset。 collectionView 是一个滚动视图。因此,处理向上/向下滚动的滚动视图和处理从左到右滚动的 collectionView 都调用此方法。

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView;
    {    
        for (CVKRecipeCollectionViewCell *cell in self.collectionView.visibleCells) {
            CGRect myFrame = cell.titleView.frame;
    
            myFrame.origin.y = self.scrollView.contentOffset.y;
    
            cell.titleView.frame = myFrame;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 2022-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多