setContentOffset不会将表格滚动到最后一个单元格

时间:2017-02-22 09:13:18

标签: ios swift uitableview autolayout

我正在尝试使用contentOffset方法将表格滚动到最后一行。当数据不多时,此方法可以正常工作但如果用户滚动到很多,则表格会占用最后一个单元格。我使用以下代码

   self.delegate.table.setContentOffset(CGPointMake(0, table.contentSize.height -  table.frame.size.height), animated: false)

4 个答案:

答案 0 :(得分:0)

我认为首选方式是调用

func scrollToRow(at indexPath: IndexPath, 
          at scrollPosition: UITableViewScrollPosition, 
    animated: Bool)

UITableView,请参阅here

答案 1 :(得分:0)

为什么不使用scrollToRow方法。

let lastIndex:NSIndexPath = NSIndexPath(forRow: tableView.numberOfRowsInSection(0) - 1, inSection: 0)

tableView.scrollToRowAtIndexPath(lastIndex, atScrollPosition: .Middle, animated: true)

滚动所需的时间基于contentSize。奇怪的是,当动画设置为false时,仍会使用此时间。为了使它更加快捷,在动画块中设置你自己的持续时间。

UIView.animateWithDuration(aSmallValue) { 
            self.tableView.scrollToRowAtIndexPath(lastIndex, atScrollPosition: .Middle, animated: true)
        }

答案 2 :(得分:0)

试试这个对我有用, objective-c的代码

 let scrollIndexPath:IndexPath = IndexPath(row: (tblView.numberOfRows(inSection: 0)-1), section: 0)
 tblView.scrollToRow(at: scrollIndexPath, at: .bottom, animated: false)

Swift 3.0代码

{{1}}

答案 3 :(得分:0)

let offsetOfTable = CGPoint(x:0, y:self.yourTableView.contentSize.height - self.yourTableView.frame.size.height + self.FOOTER_HEIGHT);
self.yourTableView.contentOffset = offsetOfTable;