ios 仿微信,簡訊聊天氣泡

來源:互聯網
上載者:User

蘋果簡訊的聊天氣泡和的聊天氣泡一直很經典,很小的一個氣泡根據文字的多少適當變大變小。


其實實現很簡單,主要是控制項的自適應撐高,這裡用到的是cell。

核心代碼

- (UIView*)bubbleView:(NSString*)textimageName:(NSString*)name

{

UIView *returnView=[[UIViewalloc]initWithFrame:CGRectZero];

UIImage*bubble;

returnView.backgroundColor=[UIColorclearColor];//ImageBubble@2x~iphone

if([nameisEqualToString:@"1"]){//bubble-default-outgoing@2x

bubble=[[UIImageimageWithContentsOfFile:[[NSBundlemainBundle]pathForResource:@"bubble-default-incoming-green@2x"ofType:@"png"]]resizableImageWithCapInsets:UIEdgeInsetsMake(15.0f,25.0f,16.0f,23.0f)];

}else{

bubble=[[UIImageimageNamed:@"ImageBubble~iphone"]stretchableImageWithLeftCapWidth:15topCapHeight:14];

}

UIImageView *bubbleImageView=[[UIImageViewalloc]initWithImage:bubble];

UIFont *font=[UIFontsystemFontOfSize:13];

CGSize size=[textsizeWithFont:fontconstrainedToSize:CGSizeMake(220.0f,1000.0f)lineBreakMode: NSLineBreakByWordWrapping];

CGSize new1=[textsizeWithFont:fontconstrainedToSize:CGSizeMake(220.0f,size.height)lineBreakMode: NSLineBreakByWordWrapping];

UILabel*bubbleText;

if([nameisEqualToString:@"1"]){

bubbleText = [[UILabel alloc] initWithFrame:CGRectMake(12.0f,5.0f,new1.width+10,new1.height+10)];

}else{

bubbleText = [[UILabel alloc] initWithFrame:CGRectMake(5.0f,5.0f,new1.width+10,new1.height+10)];

}

bubbleText.backgroundColor=[UIColorclearColor];

bubbleText.font=font;

bubbleText.numberOfLines=0;

bubbleText.lineBreakMode=NSLineBreakByWordWrapping;

bubbleText.text=text;

bubbleImageView.frame=CGRectMake(0.0f,0.0f,new1.width+20, new1.height+20.0f);

if([nameisEqualToString:@"1"]){

returnView.frame=CGRectMake(40.0f,30.0f,new1.width+20, new1.height+20.0f);

}else{

returnView.frame=CGRectMake(260.0f-new1.width,40.0f,new1.width+20, new1.height+20.0f);

}

[returnView addSubview:bubbleImageView];

[returnView addSubview:bubbleText];

returnreturnView;

這段代碼可以直接使用,在tableview的代理方法裡還要實現cell自適應的高度

- (CGFloat)tableView:(UITableView*)tableViewheightForRowAtIndexPath:(NSIndexPath*)indexPath

最後著重提出一點,其實網上很多類似的demo都可以實現此類效果,但有的demo拿過來發現氣泡吹變形了,這可不是方法出了問題,是圖片的問題,多找些氣泡試試。lz就是被這個事情困擾了好久,換了好幾個版本的方法發現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.