Ios 在UITableviewCell中的气泡上显示图像
当从imagepicker(请参见下面的代码示例)中的图像中进行选择时,如何在Ios 在UITableviewCell中的气泡上显示图像,ios,objective-c,uitableview,xmppframework,Ios,Objective C,Uitableview,Xmppframework,当从imagepicker(请参见下面的代码示例)中的图像中进行选择时,如何在UITableviewCell中将图像显示为消息气泡(请参见下面的屏幕截图) 我正在用XMPPFramework制作聊天应用程序。我已经使用这个实现在“tableview”单元中显示一个语音气泡,用于接收和发送消息 当我选择图像或视频时,我希望像在其他聊天应用程序中一样显示该图像 以下是行的UITableviewCell代码: - (UITableViewCell *)tableView:(UITableView *)
UITableviewCell
中将图像显示为消息气泡(请参见下面的屏幕截图)
我正在用XMPPFramework制作聊天应用程序。我已经使用这个实现在“tableview”单元中显示一个语音气泡,用于接收和发送消息
当我选择图像或视频时,我希望像在其他聊天应用程序中一样显示该图像
以下是行的UITableviewCell
代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDictionary *s = (NSDictionary *) [messages objectAtIndex:indexPath.row];
NSLog(@"s:-%@",s);
static NSString *CellIdentifier = @"MessageCellIdentifier";
SMMessageViewTableCell *cell = (SMMessageViewTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
//cell = [[SMMessageViewTableCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] ;
cell=[[SMMessageViewTableCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSString *sender = [s objectForKey:@"sender"];
NSString *message = [s objectForKey:@"msg"];
//NSString *time = [s objectForKey:@"time"];
CGSize textSize = { 260.0, 10000.0 };
CGSize size = [message sizeWithFont:[UIFont boldSystemFontOfSize:13]
constrainedToSize:textSize
lineBreakMode:NSLineBreakByWordWrapping];
size.width += (padding/2);
cell.messageContentView.text = message;
cell.accessoryType = UITableViewCellAccessoryNone;
cell.userInteractionEnabled = NO;
cell.backgroundColor=[UIColor clearColor];
UIImage *bgImage = nil;
if ([sender isEqualToString:@"you"])
{ // left aligned
bgImage = [[UIImage imageNamed:@"aqua.png"] stretchableImageWithLeftCapWidth:24 topCapHeight:15];
[cell.messageContentView setFrame:CGRectMake(360 - size.width - padding,
padding*2,
size.width,
size.height+10)];
UIImageView *imgview=[[UIImageView alloc]initWithFrame:CGRectMake(360 - size.width -padding, padding*2, size.width, size.height+10)];
imgview.image=image;
[cell.messageContentView addSubview:imgview];
[cell.bgImageView setFrame:CGRectMake(cell.messageContentView.frame.origin.x - padding/10,cell.messageContentView.frame.origin.y - padding/10,size.width+padding,size.height+padding)];
}
else
{
bgImage = [[UIImage imageNamed:@"orange.png"] stretchableImageWithLeftCapWidth:24 topCapHeight:15];
[cell.messageContentView setFrame:CGRectMake(padding, padding*2, size.width, size.height+10)];
[cell.bgImageView setFrame:CGRectMake(cell.messageContentView.frame.origin.x - padding/10,cell.messageContentView.frame.origin.y - padding/10,size.width+padding,size.height+padding)];
}
cell.bgImageView.image = bgImage;
//cell.senderAndTimeLabel.text = [NSString stringWithFormat:@"%@ %@", sender, time];
cell.senderAndTimeLabel.text = [self GetDateAndTime];
return cell;
}
在消息对象中,引入一个标志以确定消息类型。假设你把它命名为isText。将文本设置为“是”,但将媒体消息设置为“否”(您可以在
uiimagepicker
委托方法中执行此操作。现在,在cellforrowatinexpath
中,您可以检查媒体类型。如果媒体类型为“否”,则应在单元格中插入uiimageview
作为子视图以显示该图像。请确保在该子视图的边界中留有边距,以便它正确地包含在sp中。)eech泡泡。
要确保语音气泡相应地调整其自身大小,现在您还必须编辑
heightforrowatinexpath
方法。在第一行中,您将获得消息对象,请再次检查该标志。如果该标志为否,则将单元格的高度返回到类似msgImage.frame.size.height+(父视图的上边距)的值(下页边距到父视图)。通过将此图像视图居中到其父视图(即语音气泡)的中心,可以固定左右边距。您能稍微解释一下您的问题吗?我几乎无法理解您真正想问的是什么。我理解的是,您希望发送多媒体,例如聊天中的图像,并希望将其显示在语音气泡中?是吗对吗?@NSNoob当我从image picker中选择image时,我想在tableview中显示该图像。你是说你正在构建一个消息传递应用程序,并想将所选图像从一个设备发送到另一个设备table view?如果是,则你想通过网络传输图像并在其他设备上接收。收到图像后,保存并保存重新加载表视图。在cellForRowAtIndexPath中:
提供从存储图像加载图像的功能。希望这能解释您普遍面临的问题。希望我能为您编写代码,但我正在工作,所以我真的不能。弥补我留下的不足,但这是对您有帮助的主要逻辑实现您期望的结果。正确。有关详细示例,请参阅此优秀控制器:请执行。如果它解决了您的问题,您可能希望将其标记为帮助可能面临相同问题的其他人的正确答案。完成后,您还可以添加编码实现。