[英]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.