自定义tableview滚动效果,如Google入门

亚历克斯

适用于iOS的Google Primer应用程序具有表格视图滚动效果,滚动时单元格彼此堆叠。Primer应用程序:如果在他们的页面上滚动,您可能会看到效果...我正在谈论的效果在Primer特色课程中。我正在尝试使用tableview重现它。

我尝试在viewdidscroll事件上播放单元格的框架。我可以使用它,但是以某种方式向上移动时,它会变得非常跳动/抖动。另外,如果发生跳动,则框架会错误地偏移。我只能在单元格内部的标签框架上执行此操作。我的单元格真的很大(超过一半的屏幕)。

如何消除跳跃/混蛋?如何设置容器视图位置而不是标签位置的动画?

scrollViewDidScroll上带有标签的当前动画:

override func scrollViewDidScroll(scrollView: UIScrollView) {
    if (self.tableView.contentOffset.y < 0) { return }

    let offsetYDifference =  oldYOffset - self.tableView.contentOffset.y 
    oldYOffset = self.tableView.contentOffset.y

    let cell = self.tableView.visibleCells.first!

    var newOriginY = (cell.textLabel?.frame.origin.y)! - offsetYDifference
    if (newOriginY < 0) { //Cells get reused.
        newOriginY = newOriginY + cell.frame.height
    }

    cell.textLabel?.frame = CGRect(x: (cell.textLabel?.frame.origin.x)!,
        y: newOriginY,
        width: (cell.textLabel?.frame.width)!,
        height: (cell.textLabel?.frame.height)!)
}

在情节提要中将启用分页的自定义类分页行为设置为关闭:

override func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

    let offsety = targetContentOffset.memory.y
    var smallestCellDiffToContentOffset = abs(offsety - (self.tableView.visibleCells.first?.frame.origin.y)!)

    var closestCellOrigin = self.tableView.visibleCells.first?.frame.origin.y

    self.tableView.visibleCells.forEach { (cell) -> () in
        if (abs(offsety - cell.frame.origin.y) <= smallestCellDiffToContentOffset) {
            smallestCellDiffToContentOffset = abs(offsety - cell.frame.origin.y)
            closestCellOrigin = cell.frame.origin.y
        }
    }
    targetContentOffset.memory.y = closestCellOrigin!
}

我是一个快速入门的开发人员,对于该怎么做我一无所知。提前致谢。

克里斯托弗·凯文·豪威尔

本质上,您所看到的是UITableView正在抵制创建此动画的努力。正确的是,更改单元格的框架应留给tableview本身。

相反,您需要的是UICollectionView带有自定义布局对象的控件,该对象可以控制单元格的位置。这将是相当多的工作,但是可以使用UITableView不提供的更精细的粒度控制。

请查看本教程,以获取有关集合视图的自定义布局的简要入门。我建议您同时观看2012 WWDC视频“高级馆藏视图”和“构建自定义布局”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为Google MapView制作具有视差滚动效果的自定义CoordinatorLayout.Behavior?

来自分类Dev

自定义Google Maps叠加层,如迪士尼地图

来自分类Dev

Monogame自定义效果

来自分类Dev

Android Crouton自定义视图不允许滚动文本(字幕效果)

来自分类Dev

如何在Flutter中实现自定义应用栏布局可滚动效果

来自分类Dev

ReactJS 自定义光标效果:用户滚动时光标不起作用

来自分类Dev

ZSH自定义功能,如重复

来自分类Dev

单元格上的自定义tableview滚动问题

来自分类Dev

自定义TableView单元格中的标签在滚动后消失

来自分类Dev

在tableview中滚动自定义表格单元格时出错

来自分类Dev

使用自定义大小的单元格和不可滚动的表格时调整tableView的高度

来自分类Dev

自定义TableView单元格中的标签在滚动后消失

来自分类Dev

引导程序自定义模态效果

来自分类Dev

CSS / HTML自定义框架/效果

来自分类Dev

自定义按钮上的“单击”效果

来自分类Dev

在Android Google Map v2中的自定义标记周围添加发光效果

来自分类Dev

自定义滚动效果在Safari和Firefix中不起作用,但在chrome中完美地工作?

来自分类Dev

从自定义UITableViewHeaderFooterView获取tableView

来自分类Dev

QSqlQueryModel TableView自定义委托

来自分类Dev

访问TableView的自定义行

来自分类Dev

自定义滚动条箭头

来自分类Dev

自定义Jtable滚动条

来自分类Dev

自定义滚动条箭头

来自分类Dev

滚动自定义视图-Android

来自分类Dev

自定义无限滚动触发多次

来自分类Dev

使用按钮自定义滚动

来自分类Dev

使用ListView自定义滚动

来自分类Dev

镀铬的自定义滚动条

来自分类Dev

滚动到自定义组件

Related 相关文章

热门标签

归档