2

senders AVATAR以下のスクリーンショットとSender's name with time-stamps同じバブルメッセージを実装する必要があります。

の実装に成功しましたsimple bubble type messaging。現在、いくつかの優れた Git-hub プロジェクトが提供されていますが、必要なのは別のものです。

acanichatも使用しましたが、うまくいきませんでした。

誰かが私に同じことの良いチュートリアルを提案できますか? または、このGit-hubライブラリまたは他のライブラリですでにこれを行っている人はいますか?

senders AVATARとのバブル メッセージが必要ですSender's name with time-stamps。次の画像をご覧ください。

ここに画像の説明を入力

あなたの提案はかなりのものです。

4

1 に答える 1

1

独自のチャット テーブルを作成してみませんか? 2 つのカスタム セルを作成するだけで、XIB ファイルの助けを借りて、必要な外観を与えることができます。

以下のような微分子と条件を使用します。

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

{

 static NSString *CellIdentifier1 = @"Cell1";
 static NSString *CellIdentifier2 = @"Cell2";

CGSize boundingSize = CGSizeMake(messageWidth-20, 10000000);
CGSize itemTextSize = [messageText sizeWithFont:[UIFont systemFontOfSize:14]
                              constrainedToSize:boundingSize
                                  lineBreakMode:NSLineBreakByWordWrapping];
float textHeight = itemTextSize.height+7;


 if (messageType isEqualToString:@"textByme"]) { 

 CustomCell1  *cell = (CustomCell1 *)[self.tableview dequeueReusableCellWithIdentifier:CellIdentifier1];

        if (cell == nil) {
            NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell1" owner:self options:nil];
            cell = [topLevelObjects objectAtIndex:0];
        }



 UIImageView *bubbleImage=[[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"chatbubble"] stretchableImageWithLeftCapWidth:15 topCapHeight:15]];
        bubbleImage.tag=55;
        [cell.contentView addSubview:bubbleImage];
        [bubbleImage setFrame:CGRectMake(255-itemTextSize.width,5,itemTextSize.width+10,textHeight)];
  UITextView *messageTextview=[[UITextView alloc]initWithFrame:CGRectMake(250-itemTextSize.width,0,itemTextSize.width+15, textHeight)];
        [cell.contentView addSubview:messageTextview];
        messageTextview.editable=NO;
        messageTextview.text = messageText;
        messageTextview.dataDetectorTypes=UIDataDetectorTypeAll;
        messageTextview.textAlignment=NSTextAlignmentJustified;
        messageTextview.font=[UIFont fontWithName:@"Helvetica Neue" size:13.0];
        messageTextview.backgroundColor=[UIColor clearColor];
        messageTextview.tag=indexPath.row;
        cell.Avatar_Image.image=[UIImage imageNamed:@"avatar.png"];
        cell.time_Label.text=data.messageTime;
        cell.selectionStyle=UITableViewCellSelectionStyleNone;
        messageTextview.scrollEnabled=NO;

  return cell; 


}
else{

CustomCell2  *cell = (CustomCell2 *)[self.tableview dequeueReusableCellWithIdentifier:CellIdentifier2];

        if (cell == nil) {
            NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell2" owner:self options:nil];
            cell = [topLevelObjects objectAtIndex:0];
        }



   UIImageView *bubbleImage=[[UIImageView alloc] initWithImage:[[UIImage   imageNamed:@"chatbubble"] stretchableImageWithLeftCapWidth:15 topCapHeight:15]];
        [cell.contentView addSubview:bubbleImage];
        [bubbleImage setFrame:CGRectMake(50,5, itemTextSize.width+10, textHeight)];
        bubbleImage.tag=56;

        UITextView *messageTextview=[[UITextView alloc]initWithFrame:CGRectMake(50,0,itemTextSize.width+15, textHeight)];
        [cell.contentView addSubview:messageTextview];
        messageTextview.editable=NO;
        messageTextview.text = messageText;
        messageTextview.dataDetectorTypes=UIDataDetectorTypeAll;
        messageTextview.textAlignment=NSTextAlignmentJustified;
        messageTextview.backgroundColor=[UIColor clearColor];
        messageTextview.font=[UIFont fontWithName:@"Helvetica Neue" size:13.0];
        messageTextview.scrollEnabled=NO;
        messageTextview.tag=indexPath.row;
        cell.Avatar_Image.image=[UIImage imageNamed:@"avatar"];
        cell.time_Label.text=feed_data.messageTime;
        cell.selectionStyle=UITableViewCellSelectionStyleNone;

  return cell; 

}

}

高さ:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
float cellHeight;
        // text
        NSString *messageText = @"Your text";
        //
        CGSize boundingSize = CGSizeMake(messageWidth-20, 10000000);
        CGSize itemTextSize = [messageText sizeWithFont:[UIFont systemFontOfSize:14]
                                      constrainedToSize:boundingSize
                                          lineBreakMode:NSLineBreakByWordWrapping];

        // plain text
        cellHeight = itemTextSize.height;

        if (cellHeight<25) {

            cellHeight=25;
        }
        return cellHeight+30;
}
于 2013-10-09T12:15:41.057 に答える