- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
每当用户创建新评论或用户刷新 UITableView 时,我都会尝试滚动到 UITableView (commentsFeed) 的底部。
我使用的代码是:
func scrollToBottomOfComments() {
var lastRowNumber = commentsFeed.numberOfRowsInSection(0) - 1
var indexPath = NSIndexPath(forRow: lastRowNumber, inSection: 0)
commentsFeed.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Bottom, animated: true)
}
问题出在viewDidLoad
:
commentsFeed.rowHeight = UITableViewAutomaticDimension
commentsFeed.estimatedRowHeight = 150
这基本上表明评论可以具有动态高度,因为用户可以发表非常长的评论或非常短的评论。
当我使用 estimatedRowHeight 时,我的 scrollToBottom
没有正确滚动到底部,因为它基本上假设我的表格高度是 commentsFeed.count * commentsFeed.estimatedRowHeight
/p>
虽然这是不正确的。
当我删除 estimatedRowHeight
时,它似乎也不起作用,我认为原因是因为它没有正确计算行高,因为每个行都有动态高度.
我该如何缓解这种情况?
编辑:应该指出的是,滚动条并没有在正确的位置结束,但是当我用手指滚动到任何地方时,数据就会跳到它应该通过滚动条到达的位置
最佳答案
你为什么不通过类似于下面的方法来计算行的实际大小。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
CustomObject *message = [list.fetchedObjects objectAtIndex:indexPath.row];
//fontChat not available yet
NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:message];
NSRange all = NSMakeRange(0, text.length);
[text addAttribute:NSFontAttributeName value:[UIFont fontWithName:DEFAULT_FONT size:21] range:all];
[text addAttribute:NSForegroundColorAttributeName value:RGB(61, 61, 61) range:all];
CGSize theSize = [text boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin context:nil].size;
if (theSize.height == 0) {
theSize.height = FIXED_SIZE;
}
return theSize.height;
}
现在为了滚动,我使用以下来源:检查一下。
-(void) scrollTolastRow
{
if (self.tableView.contentSize.height > self.tableView.frame.size.height)
{
CGPoint offset = CGPointMake(0, self.tableView.contentSize.height - self.tableView.frame.size.height);
[self.tableView setContentOffset:offset animated:YES];
}
}
关于ios - UITableView 滚动到底部搞砸了 EstimatedRowHeight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28335566/
在设置您的 UITableView 用于自动调整单元格大小时,您必须指定 estimatedRowHeight。为什么甚至需要这样做 - 鉴于系统会在显示单元格之前首先计算单元格高度? 最佳答案 将行
我有一个 UITableViewController 的自定义子类。它有一个包含许多行的部分。每行对应于相同的自定义表格 View 单元格类。每个自定义单元格都有两个标签:myLabel1 和 myL
当通过 UITableViewAutomaticDimension 使用动态 UITableViewCells 高度计算时,您必须设置 estimatedRowHeight。是否有任何关于错误估计值如
我正在使用新的 iOS 8 API: self.tableView.estimatedRowHeight = 60 self.tableView.rowHeight = UITableViewAuto
我在 StoryBoard 中为我的 tableViewCell 使用 autoLayout,因为我想根据文本为行设置可变高度。 现在在 viewDidLoad 中 我正在使用这些代码行 self.t
一些背景:我有一个嵌套的 tableView,其中我可以有不同类型的单元格,从 map 到图像再到键值对等等,所以我不得不使用嵌套的 tableView,这很难通过节行结合来实现 我正在使用自动调整大
每当用户创建新评论或用户刷新 UITableView 时,我都会尝试滚动到 UITableView (commentsFeed) 的底部。 我使用的代码是: func scrollToBottomOf
简单问题:我有一个 UITableViewController,一般设置工作正常。我只是想微调间距。 在UITableViewController的viewDidLoad中我调用: tableView
我有一个 UITableView 包含 UITableViewCell 包含一个 UITextView。 我想要两件事: 用户可以在 UITextView 中输入文本,它的尺寸会随之增长。 当用户点击
我有一个带有设置的表格 View : self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.estimate
我在 xib 中为我的 customCell 使用 autoLayout,因为我想根据文本为行设置可变高度。 现在在我的 VC.m 中 我正在使用这些代码行 - (void)viewdidLoad {
我正在尝试为我的 Collection View 制作可自行调整大小的单元格。我将显示文本部分,并且这些文本部分有很多大小,因为每个单元格都有一个段落。阅读有关 appcoda 和 useyourlo
我有一个 TableViewController,它包含 2 个 ImageView,一些 UILabel。我这样设置包含: 一切似乎都很好。对于最后一个 UILabel,我想根据内容的长度显示所有内
当使用 moveRowAtIndexPath:toIndexPath: 移动 UITableViewCell 时,我在使用 estimatedRowHeight 和 UITableViewAutoma
我是一名优秀的程序员,十分优秀!