为什么不创建自己的聊天表?您只需要创建两个自定义单元格,并在 XIB 文件的帮助下,您可以提供任何您想要的外观。
使用微分器和条件,如下所示。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier1 = @"Cell1";
static NSString *CellIdentifier2 = @"Cell2";
CGSize boundingSize = CGSizeMake(messageWidth-20, 10000000);
CGSize itemTextSize = [messageText sizeWithFont:[UIFont systemFontOfSize:14]
constrainedToSize:boundingSize
lineBreakMode:NSLineBreakByWordWrapping];
float textHeight = itemTextSize.height+7;
if (messageType isEqualToString:@"textByme"]) {
CustomCell1 *cell = (CustomCell1 *)[self.tableview dequeueReusableCellWithIdentifier:CellIdentifier1];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell1" owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
}
UIImageView *bubbleImage=[[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"chatbubble"] stretchableImageWithLeftCapWidth:15 topCapHeight:15]];
bubbleImage.tag=55;
[cell.contentView addSubview:bubbleImage];
[bubbleImage setFrame:CGRectMake(255-itemTextSize.width,5,itemTextSize.width+10,textHeight)];
UITextView *messageTextview=[[UITextView alloc]initWithFrame:CGRectMake(250-itemTextSize.width,0,itemTextSize.width+15, textHeight)];
[cell.contentView addSubview:messageTextview];
messageTextview.editable=NO;
messageTextview.text = messageText;
messageTextview.dataDetectorTypes=UIDataDetectorTypeAll;
messageTextview.textAlignment=NSTextAlignmentJustified;
messageTextview.font=[UIFont fontWithName:@"Helvetica Neue" size:13.0];
messageTextview.backgroundColor=[UIColor clearColor];
messageTextview.tag=indexPath.row;
cell.Avatar_Image.image=[UIImage imageNamed:@"avatar.png"];
cell.time_Label.text=data.messageTime;
cell.selectionStyle=UITableViewCellSelectionStyleNone;
messageTextview.scrollEnabled=NO;
return cell;
}
else{
CustomCell2 *cell = (CustomCell2 *)[self.tableview dequeueReusableCellWithIdentifier:CellIdentifier2];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell2" owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
}
UIImageView *bubbleImage=[[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"chatbubble"] stretchableImageWithLeftCapWidth:15 topCapHeight:15]];
[cell.contentView addSubview:bubbleImage];
[bubbleImage setFrame:CGRectMake(50,5, itemTextSize.width+10, textHeight)];
bubbleImage.tag=56;
UITextView *messageTextview=[[UITextView alloc]initWithFrame:CGRectMake(50,0,itemTextSize.width+15, textHeight)];
[cell.contentView addSubview:messageTextview];
messageTextview.editable=NO;
messageTextview.text = messageText;
messageTextview.dataDetectorTypes=UIDataDetectorTypeAll;
messageTextview.textAlignment=NSTextAlignmentJustified;
messageTextview.backgroundColor=[UIColor clearColor];
messageTextview.font=[UIFont fontWithName:@"Helvetica Neue" size:13.0];
messageTextview.scrollEnabled=NO;
messageTextview.tag=indexPath.row;
cell.Avatar_Image.image=[UIImage imageNamed:@"avatar"];
cell.time_Label.text=feed_data.messageTime;
cell.selectionStyle=UITableViewCellSelectionStyleNone;
return cell;
}
}
身高:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
float cellHeight;
// text
NSString *messageText = @"Your text";
//
CGSize boundingSize = CGSizeMake(messageWidth-20, 10000000);
CGSize itemTextSize = [messageText sizeWithFont:[UIFont systemFontOfSize:14]
constrainedToSize:boundingSize
lineBreakMode:NSLineBreakByWordWrapping];
// plain text
cellHeight = itemTextSize.height;
if (cellHeight<25) {
cellHeight=25;
}
return cellHeight+30;
}