在顶部滚动带有 UIViews 的集合视图?

1 uiscrollview uiview ios uicollectionview swift

我有一个 UICollectionViewController 并且我添加了两个 UIView 作为子视图。一个是紫色的 UIView,上面是另一个白色的 UIView,蓝色的集合视图在两者后面向上滚动。

在这些 UIViews 下方,我collectionView.contentInset从前 300 个(这是两个 UIViews 高度的总大小)制作了。我想要完成的是滚动集合视图以及上面的两个 UIView。它几乎类似于此线程上的解决方案(在 UITableView 中滚动时移动视图),除了当我覆盖 scrollViewDidScroll 时,整个框架会向上滚动并且单元格位于两个视图后面。我想要的只是向上滚动 UIViews,然后滚动浏览集合视图。我觉得这可能涉及嵌套滚动视图。

在此处输入图片说明

这就是我如何覆盖 scrollViewDidScroll:

    var rect = self.view.frame
    rect.origin.y =  -scrollView.contentOffset.y - 300
    self.view.frame = rect
Run Code Online (Sandbox Code Playgroud)

编辑:我发布了一个视频,演示了我想在每个 iOS Tumblr 应用程序中执行的操作:https : //youtu.be/elfxtzoiHQo

Vis*_*han 5

我通过以下一些基本步骤实现了相同的要求。

//Declare the view which is going to be added as header view
    let requiredView = UIView()

//Add your required view as subview of uicollectionview backgroundView view like as
collectionView.backgroundView = UIView() 
collectionView.backgroundView?.addSubview(requiredView)

//After that control the frame of requiredHeaderView in scrollViewDidScroll delegate method like
        func scrollViewDidScroll(scrollView: UIScrollView) {
         let per:CGFloat = 60 //percentage of required view to move on while moving collection view
                let deductValue = CGFloat(per / 100 * requiredView.frame.size.height)
                let offset = (-(per/100)) * (scrollView.contentOffset.y)
                let value = offset - deductValue
                let rect = requiredView.frame
                self.requiredView.frame = CGRectMake(rect.origin.x, value, rect.size.width, rect.size.height)
        }
Run Code Online (Sandbox Code Playgroud)