ios 圖文混排 (支持顯示文字和表情)

#import "KitchenShowFaces.h"

#define?BEGIN_FLAG?@"{"

#define?END_FLAG?@"}"

@implementationKitchenShowFaces

-(void)getImageRange:(NSString*)message?:?(NSMutableArray*)array?{

NSRange?range=[messagerangeOfString:BEGIN_FLAG];

NSRange?range1=[messagerangeOfString:END_FLAG];

//判斷當(dāng)前字符串是否還有表情的標(biāo)志。

if(range.length&&?range1.length)?{

if(range.location>0)?{

[arrayaddObject:[messagesubstringToIndex:range.location]];

[arrayaddObject:[messagesubstringWithRange:NSMakeRange(range.location,?range1.location+1-range.location)]];

NSString*str=[messagesubstringFromIndex:range1.location+1];

[selfgetImageRange:str?:array];

}else{

NSString*nextstr=[messagesubstringWithRange:NSMakeRange(range.location,?range1.location+1-range.location)];

//排除文字是“”的

if(![nextstrisEqualToString:@""])?{

[arrayaddObject:nextstr];

NSString*str=[messagesubstringFromIndex:range1.location+1];

[selfgetImageRange:str?:array];

}else{

return;

}

}

}else{

if(message?!=nil)?{

[arrayaddObject:message];

}

}

}

#define?KFacialSizeWidth??24

#define?KFacialSizeHeight?24

#define?MAX_WIDTH?240

-(UIView*)assembleMessageAtIndex?:?(NSString*)?message

{

NSMutableArray*array?=?[[NSMutableArrayalloc]init];

[selfgetImageRange:message?:array];

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

NSArray*data?=?array;

UIFont*fon?=?[UIFontsystemFontOfSize:14.0f];

CGFloat?upX?=0;

CGFloat?upY?=0;

if(data)?{

for(inti=0;i<[datacount];i++)?{

NSString*str=[dataobjectAtIndex:i];

if([strhasPrefix:BEGIN_FLAG]&&[strhasSuffix:END_FLAG])

{

if(upX?>?MAX_WIDTH)

{

upY?=?upY?+?KFacialSizeHeight;

upX?=0;

}

NSString*imageName=[strsubstringWithRange:NSMakeRange(1,?str.length-2)];

UIImageView*img=[[UIImageViewalloc]initWithImage:[UIImageimageNamed:imageName]];

img.frame=?CGRectMake(upX,?upY,?KFacialSizeWidth,?KFacialSizeHeight);

[returnViewaddSubview:img];

upX=KFacialSizeWidth+upX;

}else{

for(intj?=0;?j?<?[strlength];?j++)?{

NSString*temp?=?[strsubstringWithRange:NSMakeRange(j,1)];

if(upX?>?MAX_WIDTH)

{

upY?=?upY?+?KFacialSizeHeight;

upX?=0;

}

CGSize?size=[tempsizeWithFont:fonconstrainedToSize:CGSizeMake(320,40)];

UILabel*la?=?[[UILabelalloc]initWithFrame:CGRectMake(upX,upY,size.width,size.height)];

la.font=?fon;

la.text=?temp;

[returnViewaddSubview:la];

upX=upX+size.width;

}

}

}

}

returnView.frame=?CGRectMake(0,0,?upX,?upY);//@?需要將該view的尺寸記下,方便以后使用

returnreturnView;

}

@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容