需求:类似饿了么的一元夺宝功能,后台生成一堆数字、文字,开奖后将中奖的文字或者数字,变一种颜色。
思路:1.中奖文字或数字 2.所有的数字或者文字。
后台下发的是一堆数字,和中奖号码。 NSString 肯定是无法做到的。那么剩下的选择是NSMutableAttributedString(可变字符串)。然而可变字符串需要知道具体位置,那么需要知道当前中奖的号码,所在的位置。才能改变。下面具体代码分析:
NSString* string2 = [NSStringstringWithFormat:@"11453"]; //中奖号码
NSString* OtherString = [NSStringstringWithFormat:@"11,11256,1192223,11453,1155,116,117"];//后台下发的所有号码。
NSRange range=[OtherString rangeOfString:string2];
NSLog(@"====%lu",(unsignedlong)range.location); //range.location 根据这个方法获取到中奖号码的前一位位置。比如获取的就是string2的前一位“,” 这个位置。那么中奖号码的位置就得到了
//计算需要设置变色的字符的长度
NSInteger len = string2.length;
那么中奖的位置就是 (range.location ,len)
//创建一个属性字符串
NSMutableAttributedString*MutableString = [[NSMutableAttributedStringalloc]initWithString:OtherString];
//开始根据长度和位置设置颜色
[MutableStringaddAttribute:NSForegroundColorAttributeNamevalue:[UIColorredColor]range:NSMakeRange(range.location, len)];
//创建label将属性字符串赋值
UILabel*TransactionNumLab=[[UILabelalloc]initWithFrame:CGRectMake(15,220,320,16)];
TransactionNumLab.textAlignment=NSTextAlignmentLeft;
TransactionNumLab.font=[UIFontsystemFontOfSize:15.0f];
TransactionNumLab.attributedText=MutableString;
[self.viewaddSubview:TransactionNumLab];
网友评论