将子视图添加到iOS中的聊天气泡(单元格)

时间:2016-10-19 06:37:15

标签: ios objective-c uitableview addsubview uibubbletableview

我正在使用聊天应用,我正在使用 alex barinov的聊天气泡示例。我能够发送/接收消息。我想在每个聊天气泡上添加一些标签和视图,如时间,日期,交付的图像等。

我尝试在名为UIBubbleTableViewCell.m的方法的-(void)setupInternalData类中的聊天气泡的contentView上添加一些标签,但是每个气泡重复标签(日期标签),并覆盖上一个标签,它包含两个标签。

以下是我下载项目的地址 - https://github.com/AlexBarinov/UIBubbleTableView

以下是我在聊天气泡视图中添加标签的代码 -

-(void)setupInternalData{

_fromLabel = [[UILabel alloc]initWithFrame:CGRectMake(self.frame.origin.x, self.frame.size.height-28, 100, 14)];
    _fromLabel.numberOfLines = 1;
    _fromLabel.baselineAdjustment = UIBaselineAdjustmentAlignBaselines;
    _fromLabel.clipsToBounds = YES;
    _fromLabel.layer.cornerRadius=5;
    [_fromLabel setFont:[UIFont systemFontOfSize:5]];
    [self.customView addSubview:_fromLabel];



    //display msg sent time
    NSDate *today = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setTimeStyle:NSDateFormatterShortStyle];
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
    NSString *currentTime = [dateFormatter stringFromDate:today];
    _lblMsgTime.text=currentTime;


    _lblMsgTime.frame=CGRectMake(12,0, 85, 14);
    _lblMsgTime.text=[NSString stringWithFormat:@"%@",currentTime];
    _lblMsgTime.textAlignment = NSTextAlignmentRight;
    _lblMsgTime.textColor = [UIColor blackColor];

    [_fromLabel addSubview:_lblMsgTime];
    [_lblMsgTime setAdjustsFontSizeToFitWidth:YES];

    //date formater
    NSDate *date = [NSDate date];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"d.M.yyyy";
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    NSString *string = [formatter stringFromDate:date];
    _lblMsgdate.text=string;


    _lblMsgdate.frame=CGRectMake(60 ,0, 85, 14);
    _lblMsgdate.text=[NSString stringWithFormat:@"%@",string];
    _lblMsgdate.textAlignment = NSTextAlignmentRight;
    _lblMsgdate.textColor = [UIColor blackColor];

    [_fromLabel addSubview:_lblMsgdate];
    [_lblMsgdate setAdjustsFontSizeToFitWidth:YES];


    UIImageView *backgroundView =   [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ic__typ__txt.png"]];
    backgroundView.frame=CGRectMake(self.frame.origin.x+1, self.frame.size.height-24, 10, 10);
    [self.customView addSubview:backgroundView];
    [self.customView bringSubviewToFront:_fromLabel];
    [self.customView bringSubviewToFront:backgroundView];
    [self.contentView addSubview:self.customView];
}

任何人都可以告诉我,我在这里做错了什么,我应该怎么做。任何帮助表示赞赏。等待你的宝贵答案。

1 个答案:

答案 0 :(得分:0)

嘿,我认为你必须创建一个视图并传递它。

在NSBubbleData文件中创建一个视图

- (id)initWithText:(NSString *)text date:(NSDate *)date type:(NSBubbleType)type
{
    UIFont *font = [UIFont systemFontOfSize:[UIFont systemFontSize]];
    CGSize size = [(text ? text : @"") sizeWithFont:font constrainedToSize:CGSizeMake(220, 9999) lineBreakMode:NSLineBreakByWordWrapping];

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)];
    label.numberOfLines = 0;
    label.lineBreakMode = NSLineBreakByWordWrapping;
    label.text = (text ? text : @"");
    label.font = font;
    label.backgroundColor = [UIColor clearColor];

#if !__has_feature(objc_arc)
    [label autorelease];
#endif

    UIEdgeInsets insets = (type == BubbleTypeMine ? textInsetsMine : textInsetsSomeone);
    return [self initWithView:label date:date type:type insets:insets];
}

在这个你必须创建一个视图,在这个视图中添加uilable,你想用自定义视图替换UILabel *标签的uiimage。