Swift 3.0将UILabel数字颜色设置为红色的方法
实现需求
这篇文章源于群友的一个问题:如何把『注:此商品只能整件(12的倍数发货),已选1袋,还差11袋』这段文字中的数字使用红色在UILabel中显示?
实现思路
我们可以使用UILabel的attributestring属性,通过正则表达式匹配获取数字的范围,然后添加对应的attribute。
实现代码
下面是实现代码,使用swift3.0编写:
//根据正则表达式改变文字颜色 funcchangeTextChange(regex:String,text:String,color:UIColor)->NSMutableAttributedString { letattributeString=NSMutableAttributedString(string:text) do{ letregexExpression=tryNSRegularExpression(pattern:regex,options:NSRegularExpression.Options()) letresult=regexExpression.matches(in:text,options:NSRegularExpression.MatchingOptions(),range:NSMakeRange(0,text.characters.count)) foriteminresult{ attributeString.addAttribute(NSForegroundColorAttributeName,value:color,range:item.range) } }catch{ print("Failedwitherror:\(error)") } returnattributeString } lettext="注:此商品只能整件(12的倍数发货),已选1袋,还差11袋" letrenderLabel=UILabel(frame:CGRect(x:0,y:0,width:800,height:30)) renderLabel.textAlignment=NSTextAlignment.center renderLabel.backgroundColor=UIColor.lightGray renderLabel.font=UIFont.boldSystemFont(ofSize:20) renderLabel.attributedText=changeTextChange(regex:"\\d+",text:text,color:UIColor.red)
可以把以上这段代码放到playground里面运行。
当然,这里可以不使用正则表达式,用其他方法也可以做到,但是正则表达式的做法比较灵活,以后如果有新的需求可以直接修改正则表达式就可以实现。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。