我需要滚动到底部。我有一个聊天应用程序,例如 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(使用前将#替换为@)