表格视图中的滚动底部和性能

2023-12-05

我需要滚动到底部。我有一个聊天应用程序,例如 Whatsapp。因此,当视图出现时,表视图应该显示最后一行。我通过以下行实现了这一点并且效果很好。

tableView.setContentOffset(CGPointMake(0, CGFloat.max), animated: false)

当键盘出现时我还需要滚动到底部。我正在使用自动布局,上面的行不起作用。为此,我使用以下行:

func scrollToLastRow(animated: Bool) {
    if self.numberOfRowsInSection(0) > 0 {
        self.scrollToRowAtIndexPath(NSIndexPath(forRow: self.numberOfRowsInSection(0) - 1, inSection: 0), atScrollPosition: .Bottom, animated: animated)
    }
}

这是 Tableview 的扩展。

当没有太多消息时,此解决方案工作正常。然后我尝试使用 5000 条消息(因此 tableview 有 5000 行,但我正在对它们进行分页),当键盘出现时,我看到 cpu 使用率为 %98-100。我认为第二个代码是分页问题,​​它导致将每条消息加载到内存中,并且我的应用程序冻结并收到内存警告。

如何滚动到底部而不出现任何性能问题?


如果您有分页,则可以尝试仅加载当前页面以及最终页面,假设每个页面中有 20 条消息,在这种情况下您的表只有 40 行。然后你可以使用你的功能:

func scrollToLastRow(animated: Bool) {
if self.numberOfRowsInSection(0) > 0 {
    self.scrollToRowAtIndexPath(NSIndexPath(forRow: self.numberOfRowsInSection(0) - 1, inSection: 0), atScrollPosition: .Bottom, animated: animated)
}

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

表格视图中的滚动底部和性能 的相关文章

随机推荐

  • Java:wait() 是否从同步块中释放锁

    我的印象是 wait 释放所有锁 但我发现这篇文章说 在同步方法内调用 wait 是获取内在锁的简单方法 请澄清我有点困惑 http docs oracle com javase tutorial essential concurrency
  • 将可迭代元素或不可迭代元素展开到数组中,而不检查元素 .length

    Given html div div div div calling document querySelector div 返回第一个div元素 其中 length不是返回值的属性 Calling document querySelecto
  • Oracle:不是按表达式分组错误

    以下是我的查询 我不确定是什么原因导致 Not A group by 表达式错误 任何帮助深表感谢 SELECT c courseID c courseName AVG a Mark as Average Mark FROM course
  • 如何使聊天中的链接可点击

    我的网站上有一个聊天 它从 JSON 文件读取并获取每条消息 然后使用Vue js 但是 我的问题是 当用户发布链接时 它不包含在锚标记中 a href a 因此它不可点击 我看到了这个post 我认为这样的东西会起作用 但是 我不允许向该
  • 如何在 Windows 上设置 gl3w?

    我一直在寻找设置 Gl3w 的详细指南 因为我到处都找不到 首先 下载gl3w https github com skaslev gl3w 然后 下载 Python 3 x https www python org downloads 接下
  • 关于HTML中相对文件路径的问题

    已经有一些关于这个主题的帖子 但对我没有帮助 我已经为 HTML 和 CSS 页面制作了地图结构 但无法将它们相互链接 我的地图结构 采购订单网页设计 Homepage HTML 页面主页 CSS 页面主页 图片主页 Sports HTML
  • Android意图语法

    在我尝试找出如何在应用程序中启动新意图的过程中 我遇到了几种表达它的方法 此语法返回运行时错误 即 ActivityNotFound 异常 Intent in new Intent com something something 当然 我的
  • API设计中如何避免“参数过多”问题?

    我有这个API函数 public ResultEnum DoSomeAction string a string b DateTime c OtherEnum d string e string f out Guid code 我不喜欢它
  • heightForRowAt 与estimatedHeightForRowAt 有什么区别?

    通常当我想设置行高时然后设置 func tableView tableView UITableView heightForRowAt indexPath IndexPath gt CGFloat return 300 受益者是什么estim
  • 将表格从 Word 复制粘贴到 Excel

    我有一个定期更新的word文档 我可以进入该 Word 文档 选择整个表格的内容并复制 然后进入 Excel 电子表格并将其粘贴 搞砸了 但是 我将其修复如下 sht Cells UnMerge sht Cells ColumnWidth
  • 在android中连接到oracle

    所以人们可能会告诉我这是一个坏主意 但我至少想尝试一下 EDIT该应用程序的目的是 仅当设备属于 oracle db 所在网络或通过 VPN 连接到网络时 它才能工作 数据库中的信息无法全局访问 这就是为什么我需要直接连接到 oracle
  • vue,如何动态地、以编程方式、单击将组件添加到 DOM 特定位置?

    我需要添加一个动态导入的组件 只需将虚拟标签添加到 DOM 结构中的特定位置即可 不幸的是 我发现的每一种方法都没有解决我的问题 我首先如何尝试 父组件 Editor vue
  • 当子id包含'.'时sql server中的分层排序

    我有一些像下面这样的孩子 childid 1 1 1 2 2 8 2 7 6 5 6 5 1 6 5 15 7 1 8 排序顺序将是 childid 1 1 1 2 2 7 2 8 6 5 6 51 6 5 15 7 1 我尝试转换为整数
  • 是否可以更改毕加索用于图像的缓存大小?

    我正在使用 Picasso 从 URL http 加载图像 有时 当我尝试使用毕加索的 预加载 图像时fetch 方法 图像不会被缓存 我猜是因为它的尺寸太大了 阅读答案this问题 但是setCache 似乎没有被我认可 我什至没有在毕加
  • Python继承结构和参数

    我正在尝试设计一个类结构 允许用户定义自己的类 以重载其他类中的预定义方法 在这种情况下 用户将创建 C 类来重载 D 中的 函数 方法 用户创建的 C 类与其他用户创建的类 A 和 B 具有共同的逻辑 因此它们继承自 C 来重载 函数 但
  • 将测试路径输出重定向到文本文件

    txt 文件只是一堆 UNC 路径 我试图在验证测试路径后将此文本文件中的 UNC 路径列表放入另一个文本文件中 它在屏幕上显示经过验证的路径 但不会填充文本文件 cfgs Get Content cfgpath txt cfgs if T
  • 本地序列不能在查询运算符的 LINQ to SQL 实现中使用(Contains() 运算符除外)

    我在我的项目中使用 LINQ 我的代码是 var SE from c in Shop Sections join c1 in obj SectionObjects on c SectionId equals c1 SectionId sel
  • 为什么我们不能在派生类中使用带参数的构造函数

    为什么这是不可能的 使用构造函数参数实例化 DerivedClass 时出现以下编译器错误 GenericParameterizedConstructor DerivedClass 不包含采用 1 个参数的构造函数 但调用一个非常相似的方法
  • 嵌套环境变量

    我正在尝试制作一个文件 要求您提供用户名和密码并进行注册 注册时 密码保存在变量中 问题是我必须为这些变量设置名称 这些名称将在您写下用户名时输入 例如 我需要用户 john 的密码 当用户写下用户名 john 时 它会存储在变量中 use
  • 表格视图中的滚动底部和性能

    我需要滚动到底部 我有一个聊天应用程序 例如 Whatsapp 因此 当视图出现时 表视图应该显示最后一行 我通过以下行实现了这一点并且效果很好 tableView setContentOffset CGPointMake 0 CGFloa