假设您有一个显示消息的 TableView T,
T[ message d
T[ message c
T[ message b
T[ most recent message down bottom
假设有 100 条消息,示例中显示底部的 4 条消息。
所以 TableView 高度是 700 说。您在下方有一个典型的文本条目...
T[ message d
T[ message c
T[ message b
T[ most recent message down bottom
[enter snapped chat message!] [send]
当键盘出现时,可见表格 View 的新高度为 400 say。
当然,这会“切断”消息的底部——最近的两条消息将不再可见。
T[ message d
T[ message c
[enter snapped chat message!] [send]
[ iOS keyboard ]
[ iOS keyboard ]
(因此,消息 A 和 B 现在位于键盘“下方”。)
例如,自然地,您所做的只是在键盘出现后滚动表格。以临时方式执行此操作没问题。
但是,如果可以以这样一种方式子类化 UITableView ,当可见区域的大小发生变化时,表格 View 知道保持“底点”相同,那将是非常自然的。
因此,当表格底部上下移动时(由于键盘出现 - 或其他原因),表格实际上会根据表格“底部”的移动进行滚动。
(除此之外,这将解决“匹配动画时间”的麻烦。)
这是否可以优雅地实现,如果可以的话,如何实现 - 事实上,现在这看起来很自然,也许它作为标志内置到 UITableView 中,我只是不知道?
这里的问题又是
如何修改 UITableView 使其移动自己的滚动位置,因为 View 大小发生变化...
(以保持“底点相同”)
请注意,从外部“手动”滚动表格是微不足道的。
最佳答案
节标题贴在顶部,所以可能是这样的:
1. 将最新消息设为节标题 View 而不是表格单元格
2.垂直镜像 TableView :
tableView.transform = CGAffineTransformMakeScale(1, -1);
3.垂直镜像部分标题和表格单元格
4. 反转消息的顺序
这就是你要找的吗?
关于ios - 制作一个 UITableView "sticky to the bottom",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44950722/