使一个UITableView“粘在底部”
假设有其示出了消息的表视图T,使一个UITableView“粘在底部”
T[ message d
T[ message c
T[ message b
T[ most recent message down bottom
说有100条消息,与本例中的底部4中可见。
所以表视图的高度是700说。您在下面有一个典型的文本条目...
T[ message d
T[ message c
T[ message b
T[ most recent message down bottom
[enter snapped chat message!] [send]
当键盘出现时,可见表视图的新高度为400说。
当然,这将“消除信息的底部” - 最近的两个将不再可见。
T[ message d
T[ message c
[enter snapped chat message!] [send]
[ iOS keyboard ]
[ iOS keyboard ]
(因此,消息A和B是现在键盘上的“下”)。
自然出现后的键盘,比如你做的是刚刚滚动表。没有问题以特别的方式进行。
然而,这将是非常自然的,如果能以这样的方式,作为可视面积的大小变化,表视图知道保持“底部点”相同子类的UITableView。
因此,随着表底部的上下移动(由于键盘出现 - 或任何原因),表格会根据表格的“底座”移动而实际滚动。
(二话不说,这将解决“匹配动画计时”滋扰。)
难道这是优雅的实现,如果又如何 - 这确实会显得如此自然,这些天,也许它的内置以UITableView作为标志,我只是不知道?
再次这里的问题是
如何修改的UITableView,以便它使自己的滚动位置,如,视图大小的变化...
(以保持“底点相同“)
请注意,仅从”外部“滚动表格”手动“就是微不足道的。
节头粘在上面,所以也许是这样的:
1.最近的消息一节头视图2,而不是表格单元格
2。镜像表视图垂直:tableView.transform = CGAffineTransformMakeScale(1, -1);
3.垂直镜像节头和表单元格
4.反向邮件
的顺序是你在找什么?
据我所知,你有这样几个选择:
如果你有行的indexPath你想成为可见:
tableView.ScrollToRow(indexPath, UITableViewScrollPosition.Top, true);
这将滚动到细胞由indexPath给出。在这种情况下,您可以选择在屏幕的.Top
上显示该选项。
如果没有indexPath,你可以使用:
tableView.ScrollRectToVisible(new RectangleF(0, Ydisplacement, tableView.Width, tableView.Height), true);
对不起,如果问题不明确。当然,手动滚动表格并不重要。我们想要在这里做的是UITableView的子类,所以当视图调整大小时,表视图自己移动表格,以便“底点”在任何时候都完全匹配,即使在动画期间也是如此。 – Fattie
请注意,它在问题中提到:“自然地,您所做的只是在键盘出现后滚动表格,例如,以特别方式进行操作时没有问题。”注意FTR,你不能仅仅使用索引路径来做到这一点,你需要确切的像素位置。但这与这个问题无关,欢呼声 – Fattie
哦,你是对的,我误解了你的问题。你有没有尝试玩autoLayout?我想你将不得不在程序中以键盘的形式添加一个约束到你的tableView。 – pesch
令人着迷的是,只有**没有办法做到这一点**。 mag_zbc有惊人的“诀窍”,它使它发生(真棒)。但奇怪的是,在iOS中没有自然的方法。 – Fattie