ios - 制作一个 UITableView "sticky to the bottom"

标签 ios swift uitableview

假设您有一个显示消息的 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/

相关文章:

iphone - 如何在 objective c 的 facebook 组上传图片

ios - Cocoapod 安装后找不到代码签名

ios - 如何在 quickblox iOS 中将视频文件作为附件发送?

ios - 如何获取当前用户创建的所有 CloudKit 记录?

ios - 如何将此 Web 服务方法声明为全局方法?

swift - 不明白这个尾随闭包

ios - UITableViewCell 自动调整高度不工作

ios - 视觉 QuartzCore iOS

objective-c - 动态计算自定义 UITableViewCell 的高度

ios - UITableCellView.contentView 中的标签在使用自动调整大小时显示两次