Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在UITableviewCell中的气泡上显示图像_Ios_Objective C_Uitableview_Xmppframework - Fatal编程技术网

Ios 在UITableviewCell中的气泡上显示图像

Ios 在UITableviewCell中的气泡上显示图像,ios,objective-c,uitableview,xmppframework,Ios,Objective C,Uitableview,Xmppframework,当从imagepicker(请参见下面的代码示例)中的图像中进行选择时,如何在UITableviewCell中将图像显示为消息气泡(请参见下面的屏幕截图) 我正在用XMPPFramework制作聊天应用程序。我已经使用这个实现在“tableview”单元中显示一个语音气泡,用于接收和发送消息 当我选择图像或视频时,我希望像在其他聊天应用程序中一样显示该图像 以下是行的UITableviewCell代码: - (UITableViewCell *)tableView:(UITableView *)

当从imagepicker(请参见下面的代码示例)中的图像中进行选择时,如何在
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中:
提供从存储图像加载图像的功能。希望这能解释您普遍面临的问题。希望我能为您编写代码,但我正在工作,所以我真的不能。弥补我留下的不足,但这是对您有帮助的主要逻辑实现您期望的结果。正确。有关详细示例,请参阅此优秀控制器:请执行。如果它解决了您的问题,您可能希望将其标记为帮助可能面临相同问题的其他人的正确答案。完成后,您还可以添加编码实现。