2012-08-02 55 views
3

我现在有具有消息功能的应用程序。它允许用户彼此聊天。目前这些消息从下到上显示(我可以通过旋转表格和单元格来实现这一点)。现在区分发件人和收件人我使用不同的彩色文本。展开聊天气泡的UITableViewCell的iOS

我想用一个泡沫的图像作为消息的背景,而不是让应用程序看起来更像的iMessage。我知道有一个图像需要调整大小,但我无法理解这一点。我需要一种特殊的图像吗?如果是这样,我该如何调整图像大小以适合文本,然后将其作为背景?

在此先感谢您的帮助。我使用的产生与泡沫细胞

CNC中代码:

[self.textLabel setFont:[UIFont fontWithName:@"Helvetica" size:20]]; 
[self.textLabel setNumberOfLines:0]; 
CGSize size = [message.message sizeWithFont:self.textLabel.font]; 

    [self.textLabel setFrame:CGRectMake(690.0f - (size.width + 5.0f), 8.0f, size.width + 5.0f, size.height)]; 
    UIImage *bubble = [[UIImage imageNamed:@"aqua.png"] stretchableImageWithLeftCapWidth:24 topCapHeight:15]; 
    UIImageView *bubbleView = [[UIImageView alloc] initWithFrame:CGRectMake(704 - (size.width + 25.0f), 2.0f, size.width + 25.0f, size.height + 15.0f)]; 
    bubbleView.image = bubble; 
    self.backgroundColor = [UIColor clearColor]; 
    self.opaque = NO; 
    self.backgroundView = bubbleView; 

回答

2

有实现这种功能的几种方法。可能是最简单的解决方案是使用UIImage
-resizableImageWithCapInsets:方法。您可以为每个聊天消息创建一个桌面视图单元格,并在背景上绘制此图像,并使图像在顶点插入点处伸展。

在的tableView委托方法-tableView:heightForRowAtIndexPath:您可以设置单元格的高度,利用该方法NSString
-sizeWithFont:constrainedToSize:lineBreakMode:来计算的单元格的内容适当的高度(实际的聊天消息)。

+0

所以我有一个类,UITableView细胞的子类。在这里,我根据消息和改变文本的颜色设置单元格的文本以及其他一些东西,如左对齐或右对齐。我知道如何设置行的高度。我不明白的是在单元格的背景中绘制UIImage。我想是这样的self.backgroundView = ImageView的,其中自是的UITableView细胞和ImageView的是图像视图,其图像设置为聊天气泡PNG – 2012-08-02 15:38:51

+0

我无法获得泡正常工作。我会在我的问题中发布一些我正在使用的代码。 – 2012-08-02 19:20:32

+0

使用上述方法找出它。谢谢。我使用了stretchableImageWithLeftCapWidth:rightCapWidth:方法,而不是使用resizableImageWithCapInsets。 – 2012-08-03 16:52:08

-2

添加UIImageView到你使用任何对象来显示文本。然后只需将其image属性设置为您想要的任何图像; UIImageView会为您自动调整大小。

UIImageView Class Reference

+0

我使用的是自定义的UITableViewCell,有没有办法可以让该UIImageView的单元格的背景,并将其大小设置为文本的大小? – 2012-08-02 14:57:31

+0

是的。你可以拖拽一个'UIImageView'到单元格中。至于能够将其大小设置为文本的大小,它取决于您用来显示文本的内容。 – Dustin 2012-08-02 14:59:25

+0

我以编程方式创建单元格,因此我不能将UIImageView绘制到单元格中。 – 2012-08-02 15:41:01

9

我已经创建了一个同上的iMessage像使用4- UIViews泡沫。它在代码和XIB(UITableViewCell)中都可用。它是高度可定制的。你可以改变颜色,字体,字体大小,尾或无尾,等等。请看看这里

https://github.com/kerrygrover/iMessageBubble

enter image description here

+0

我使用它作为模板并根据需要在我的项目中进行自定义,它运行良好。核心思想是使用重叠的不同形状来产生尾部效应。 – 2017-01-09 18:04:21

+0

这是否有一个迅速的版本? – 2017-03-03 09:09:07

+0

还没有。计划做,但不是很快。 – kerry 2017-03-03 09:10:18