滚动或重新加载后单元格高度增加
Posted
技术标签:
【中文标题】滚动或重新加载后单元格高度增加【英文标题】:Cell height increases after scroll or reload 【发布时间】:2015-02-17 11:12:22 【问题描述】:我有用于聊天表的动态单元格。我有消息标签和时间标签。禁忌如下
消息标签前导 >=100
消息标签尾随 = 15
消息标签顶部=10
消息标签底部到时间标签顶部 = 5
到底部的时间标签 = 5
时间标签宽60高21
时间标签尾随 =15
我尝试了很多内容拥抱和同情的价值观。 消息标签 Content Hugging 属性 是
水平 250
垂直 1000
抗压性
水平 250
垂直 1000
它第一次正确计算高度。 但是当我在发送或接收消息时添加新单元格时,返回并返回相同的视图,其高度增加了 1500 多。这是查找行高的代码。
-(CGFloat)heightForCellAtIndexPath:(NSIndexPath*)indexPath
MessageCentreService *message = [[self.dic_messages objectForKey:[self.array_dates objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row];
static dispatch_once_t onceToken;
static AttendieChatTableViewCell *sizingRightCell = nil;
static AttendieChatTableViewCell *sizingLeftCell = nil;
dispatch_once(&onceToken, ^
sizingLeftCell = [self.tableView_attendeeChatList dequeueReusableCellWithIdentifier:kCellChatLeftIdentifier];
sizingRightCell = [self.tableView_attendeeChatList dequeueReusableCellWithIdentifier:kCellChatRightIdentifier];
);
sizingLeftCell.bounds = CGRectMake(0.0f, 0.0f, CGRectGetWidth([UIScreen mainScreen].bounds), CGRectGetHeight(sizingLeftCell.bounds));
sizingRightCell.bounds = CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.tableView_attendeeChatList.frame), CGRectGetHeight(sizingRightCell.bounds));
if(message.message_type == 1)
sizingLeftCell.label_message.text = message.message_text;
sizingLeftCell.label_messageTime.text = @"10.30 pm";
[sizingLeftCell setNeedsLayout];
[sizingLeftCell layoutIfNeeded];
CGSize size = [sizingLeftCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
return size.height;
else
sizingRightCell.label_message.text = message.message_text;
sizingRightCell.label_messageTime.text = @"10.30 pm";
[sizingRightCell setNeedsLayout];
[sizingRightCell layoutIfNeeded];
CGSize size = [sizingRightCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
return size.height;
【问题讨论】:
【参考方案1】:我也遇到了 systemLayoutSizeFittingSize 的问题,我通过设置标签的 preferredMaxLayoutWidth 来解决这个问题。
【讨论】:
我希望我的标签在宽度上也是动态的。尾随设置为 >= 100。当我设置首选宽度时,它也会显示奇怪的行为。以上是关于滚动或重新加载后单元格高度增加的主要内容,如果未能解决你的问题,请参考以下文章
自动大小表格视图单元格扩展高度中的嵌套水平集合视图使集合视图滚动重置当重新加载单元格以累积行
UITableViewCell 自定义类 - 更改子视图高度约束后重新加载单元格高度