簡體   English   中英

在UITableviewCell中的氣泡上顯示圖像

[英]Display image on bubble in UITableviewCell

當從圖像選擇器中的圖像(請參見下面的代碼示例)中選擇一個消息氣泡(請參見下面的屏幕截圖)時,如何在UITableviewCell顯示圖像?

我正在使用XMPPFramework制作聊天應用程序。 我已使用此鏈接中的實現在“表格視圖”單元中顯示氣泡,用於接收和發送消息。

選擇圖像或視頻時,我希望像其他聊天應用程序一樣顯示該圖像。

以下是UITableviewCell行的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。 為文本設置為YES,為媒體消息設置為NO(您可以在uiimagepicker委托方法中進行此操作。現在在cellForRowAtIndexPath ,您可以檢查媒體類型。如果為'NO',則應在其中插入uiimageview作為子視圖要顯示該圖像的單元格,請確保在該子視圖的邊界中留有邊距,以便將其正確地封裝在對話氣泡中。要確保對話氣泡相應地調整其自身大小,現在您必須編輯heightForRowAtIndexPath方法在第一行中,您將獲得消息對象,請再次檢查該標志。如果為否,則將單元格的高度返回至msgImage.frame.size.height +(父視圖的頂部邊距)+(底部通過將此imageView居中於其父視圖的中心(即氣泡),可以固定左右邊緣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM