微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – 使用动态单元格高度时,将表格视图滚动到底部

使用动态单元格高度时,如何将表格视图滚动到底部

出于某种原因,此代码在此方案中不起作用:

[self.tableView scrollRectToVisible:CGRectMake(0,self.tableView.contentSize.height - self.tableView.bounds.size.height,self.tableView.bounds.size.width,self.tableView.bounds.size.height) animated:YES];

谢谢!

编辑:使用@ Hasiya的代码滚动到底部,对于你们中的一些人来说可能就是这样.

解决方法

以下内容适用于我的Swift 3.1代码,使用Xcode 8.3.2仅针对iPhone的iOS 10.1.

我和OP有同样的问题.我的应用程序包括消息功能.当消息视图被推入堆栈时,我希望最后一个帖子可见.由于消息的内容,我的tableview单元格高度是可变的.没有一个解决方案令我满意(最后一个tableview行不可见或只是部分可见).但是,这对我有用:

>在Interface Builder(IB)中,将单元格行高设置为大于我预期的值,我的平均行高在我的情况下为50(确保选中“自定义”复选框).
>在ViewController中,在’viewDidLoad’函数中实现tableview,设置tableview的’rowHeight’属性,如下所示:

myTableView.rowHeight = UITableViewAutomaticDimension

>同样在’viewDidLoad’函数中,将tableview的’estimatedRowHeight’设置为高于您预期的平均行高的值.在我的情况下140.

最后也是最重要的是我写了这段代码

extension UITableView {

    func scrollToBottom() {
        let rows = self.numberOfRows(inSection: 0)

        let indexPath = IndexPath(row: rows - 1,section: 0)
        self.scrollToRow(at: indexPath,at: .top,animated: true)
    }
}

请注意at:.top – 这就解决了我的问题.传递UITableViewScrollPosition参数的.bottom值不起作用.即使通过.middle工作 – 但不是.bottom.

因此,每当我的数据集需要更新或新消息到达时,我都会打电话

func getTableViewData(){
    // Get your data here any way you usually do..

    // call to reload
    myTableView.reloadData()
    // call the scroll function
    myTableView.scrollToBottom()
}

我通过简单地将at:.bottom参数更改为:.top来测试此“方法”的结果.每当我将其更改为:.top时,最后一个表行完全可见,表格一直滚动到底部.

原文地址:https://www.jb51.cc/iOS/332211.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐