在UITableView中更顺畅的自动滚动

时间:2016-02-28 12:44:19

标签: ios swift uitableview scroll drag-and-drop

我有一个拖放开关语句,允许用户抓取一个单元格,代码无缝地创建它的快照,然后用户可以将快照拖动到一个新位置。繁荣!细胞移动了。

当行/单元格的数量超过iPhone的屏幕时,我添加了代码以允许用户向上/向下拖动表格。

if locationOnScreen.y < 200 && indexPath!.row > 1 {
    let indexPath = NSIndexPath(forRow: indexPath!.row-1, inSection: 0)
    tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: UITableViewScrollPosition.Top, animated: false)
} else if locationOnScreen.y > 550 && indexPath!.row < listCount {
    let indexPath = NSIndexPath(forRow: indexPath!.row+1, inSection: 0)
    tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: UITableViewScrollPosition.Bottom, animated: false)
}

注意:单元格的高度不同,有些占据屏幕高度的一半,其他则小得多。

问题

此代码有效,但它可以快速上/下快速查看表格。它非常适合快速到达桌面的顶部或底部,但不适合逐渐滚动。有什么想法吗?

有没有办法让拖动的单元格靠近顶部,表格每秒以固定的速率向上滚动?如果靠近底部,会以每秒固定的速率向下滚动吗?

1 个答案:

答案 0 :(得分:0)

尝试传递animated: true。它应滚动到带动画的单元格

if locationOnScreen.y < 200 && indexPath!.row > 1 {
    let indexPath = NSIndexPath(forRow: indexPath!.row-1, inSection: 0)
    tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: UITableViewScrollPosition.Top, animated: true)
} else if locationOnScreen.y > 550 && indexPath!.row < listCount {
    let indexPath = NSIndexPath(forRow: indexPath!.row+1, inSection: 0)
    tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: UITableViewScrollPosition.Bottom, animated: true)
}