We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
项目中聊天cell; 每个cell都有时间label。但是label依据某些规则有时显示有时不显示;但是每个cell都要有这个控件; 所以将其写在一个基类的cell中;其他子cell继承自他并继续写布局
/** root cell */
(void)setupViews { _timeContainerView = [UIView new];
[self.contentView addSubview:_timeContainerView]; [_timeContainerView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.contentView).offset(0.f); // 显示时 间距顶部24pt make.centerX.mas_equalTo(self.contentView);
}]; }
/** sub cell */
// head img view 默认为客服头像 UIImage *img = [UIImage imageNamed:@"xxxx"]; _headImageView = [[UIImageView alloc] initWithImage:img];
[self.contentView addSubview:_headImageView]; [_headImageView mas_makeConstraints:^(MASConstraintMaker *make) { // 这里的timeContainerView 就是继承上面的rootcell 来的,相当于接着super的 setupViews接着写 make.top.mas_equalTo(self.timeContainerView.mas_bottom).offset(16.f); make.leading.mas_equalTo(self.contentView.mas_leading).offset(8.f); make.size.mas_equalTo(img.size); }]; // 聊天气泡 _chatBubbleView = [UIView new]; [self.contentView addSubview:_chatBubbleView]; [_chatBubbleView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.timeContainerView.mas_bottom).offset(16.f); make.leading.mas_equalTo(self.headImageView.mas_trailing).offset(8.f); make.bottom.mas_equalTo(self.contentView); }];
}
/** cell 缓存代码 */
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { Entity *entity = self.dataSource[indexPath.row];
return [tableView fd_heightForCellWithIdentifier:SubCellID cacheByIndexPath:indexPath configuration:^(SubCell *cell) { cell.entity = entity; }]; } 以上是一个纯文本的聊天cell样式 出现的问题: cell出现的时候布局错乱。感觉是因为没有去读取父类那个时间label的布局。 然后再次刷新cell(比如reloadData)的时候。布局就会正常。 请问应该怎么解决?
我之前是用的系统的自动计算高度的方法 可以正常布局。 //- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath { return UITableViewAutomaticDimension; }
但是考虑到没有高度缓存。所以想替换成您这个。
期待您的回复!~
The text was updated successfully, but these errors were encountered:
No branches or pull requests
项目中聊天cell; 每个cell都有时间label。但是label依据某些规则有时显示有时不显示;但是每个cell都要有这个控件;
所以将其写在一个基类的cell中;其他子cell继承自他并继续写布局
/** root cell */
(void)setupViews
{
_timeContainerView = [UIView new];
[self.contentView addSubview:_timeContainerView];
[_timeContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.contentView).offset(0.f); // 显示时 间距顶部24pt
make.centerX.mas_equalTo(self.contentView);
}];
}
/** sub cell */
{
[super setupViews];
// head img view 默认为客服头像
UIImage *img = [UIImage imageNamed:@"xxxx"];
_headImageView = [[UIImageView alloc] initWithImage:img];
}
/** cell 缓存代码 */
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
Entity *entity = self.dataSource[indexPath.row];
return [tableView fd_heightForCellWithIdentifier:SubCellID cacheByIndexPath:indexPath configuration:^(SubCell *cell) {
cell.entity = entity;
}];
}
以上是一个纯文本的聊天cell样式
出现的问题:
cell出现的时候布局错乱。感觉是因为没有去读取父类那个时间label的布局。 然后再次刷新cell(比如reloadData)的时候。布局就会正常。
请问应该怎么解决?
我之前是用的系统的自动计算高度的方法 可以正常布局。
//- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewAutomaticDimension;
}
但是考虑到没有高度缓存。所以想替换成您这个。
期待您的回复!~
The text was updated successfully, but these errors were encountered: