gpt4 book ai didi

ios - UITableView 滚动到底部搞砸了 EstimatedRowHeight

转载 作者:可可西里 更新时间:2023-11-01 03:43:19 28 4
gpt4 key购买 nike

每当用户创建新评论或用户刷新 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com