有如下这样的html
<span style="color:'#F62637', background-color:'#FFFFFF'">颜色样式</span>无样式
你想要在label控件上,通过富文本方式进行显示,而label的textColor为白色,这时候,你希望“无样式”的字体颜色为白色的。但是富文本没有设置ForgroundColor的情况下,字体颜色默认为黑色的。而且forgroundColor和label的textColor的设置是处于同一个水平的,你后设置的那个总是会覆盖掉先设置的那个。所以这样就导致了一个问题“无样式”字体的颜色不会显示白色,而是黑色的。
如果html是确定的,那么可以考虑通过便利的方式进行实现。对于不确定的html,一个很好的思路是想办法修改富文本的默认字体颜色。我的第一个想法就是从NSAttributedString的属性入手,可是找了半天都没有找到办法来。还有一个比较笨的办法就是通过NSAttributedString的遍历方法去找color为黑色(默认颜色)的字符串,但是这个方法有一个问题,如下html
<span style="color:black">黑色样式</span>无样式
本身的html设置的字体颜色为黑色的时候,遍历的方法就会变得很尴尬。
想了半天还是没有解决,灵感一闪,oc解决不了,那么就从html入手吧,直接拼接html,在最外面加个span。 如下所示:
<span style="color: your color here"><span style="color:black">黑色样式</span>无样式</span>
这样就直接实现了改变NSAttributedString的默认字体颜色的问题了,哈哈哈。
有更好的办法,欢迎指教哈~