根据UITableViewCell标签高度和宽度

时间:2017-04-18 11:21:57

标签: ios objective-c iphone uitableview

我可以根据文字调整自定义UITablleViewCell标签的宽度和高度。它看起来像下面。

enter image description here

现在我想将下面的聊天气泡图像设置为标签作为背景,以便气泡根据标签文本调整其大小,并使气泡效果与其他信使类似。

enter image description here

以下是我将图片设置为标签背景的代码。

-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {

    return UITableViewAutomaticDimension;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

        return UITableViewAutomaticDimension;


}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{



            static NSString *simpleTableIdentifier = @"ChatConversationTableViewCell";

            ChatConversationTableViewCell *cell = (ChatConversationTableViewCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
            if (cell == nil)
            {
                NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ChatConversationTableViewCell" owner:self options:nil];
                cell = [nib objectAtIndex:0];
            }

            cell.selectionStyle = UITableViewCellSelectionStyleNone;

            cell.chatmsgLabel.text = [chatHistoryArr objectAtIndex:indexPath.row];
            cell.timeAndDateMsgLabel.text = [timeAndDateMsgArr objectAtIndex:indexPath.row];

UIImage *img = [UIImage imageNamed:@"bubble2.png"];
CGSize imgSize = cell.timeAndDateMsgLabel.frame.size;

UIGraphicsBeginImageContext( imgSize );
[img drawInRect:CGRectMake(0,0,imgSize.width,imgSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

cell.timeAndDateMsgLabel.backgroundColor = [UIColor colorWithPatternImage:newImage];

            return cell;


}

输出看起来像

enter image description here

我的预期输出是

enter image description here

以下是我的CustomTableViewCell及其约束

的更多信息

enter image description here

enter image description here

我尝试了很多来实现输出,但我无法弄明白。有没有其他方法来实现输出,我准备遵循任何适合我的要求的方法。任何帮助都将非常感激。

3 个答案:

答案 0 :(得分:1)

要解决此问题,您可以将所有 imageView约束设置为零。 然后,您可以在.xassets文件中添加图像,然后使用切片图像。这将在必要时拉伸图像并缩小图像。 Image

  

切片取决于你。

Image of my storyboard

Output

希望它会对你有所帮助。

答案 1 :(得分:0)

您可以通过以下方式解决问题;

  1. 创建一个UIView。
  2. 设置背景。
  3. 在此UIView中添加标签。
  4. 将所有约束设置为零。

    这可以解决您的问题

答案 2 :(得分:-1)

执行以下步骤:

  1. 拿一个UIView(说,myView)并给出它的约束并清除backGround Color。

    • 顶部跟踪到superview。
    • 导致关系<=和中等优先级的超级视图。
    • 宽度常量,关系>=,优先级高于领先。
    • 身高与关系>=
  2. 现在使用约束

    在myView中添加ImageView
    • 领先,尾随顶部,底部至superview。
  3. 为text_mesage添加标签,时间,在myview中查看并相应地给出约束。

  4. 现在运行您的项目并检查。如果还有任何问题,请告诉我。