介绍
富文本,也就是NSMutableAttributedString 和NSAttributedString,大家使用的时候都不陌生,今天想介绍的是富文本的xib实现。
常见场景
假如设计出了一个彩虹的图案🌈,需要让你写一给它写个介绍,那自然跑不了赤橙黄绿青蓝紫这几个颜色,但是,设计说,每个字的颜色都要和字的意思对应,自然,最简单的办法是三板斧 初始化、添加、赋值。
例如
var text = NSMutableAttributedString(string: "赤", attributes: [NSAttributedString.Key.foregroundColor : UIColor.red])
let orangeAttributedText = NSAttributedString(string: "橙", attributes: [NSAttributedString.Key.foregroundColor : UIColor.orange])
text.append(orangeAttributedText)
然后重复这个过程5次,把各个颜色都加进去,最后
label.attributedText = text
但是 这样会导致我们写14行的代码,如果设计需要特定的字号,那么我们还需要加7次属性。
这自然不是我们所愿意看见的,于是有了下面介绍的办法
解决方法
i. 首先选中控件,在attributes Inspector面板选中title或者text区域
像这样

ii. 然后点击fonts的图标,打开fonts的面板可以根据需要设置全部文本的字号

iii. 因为文本需要不同的属性,这个时候可以在attributes Inspector面板中选择要添加属性的文本,然后选择需要的属性,然后对每段需要添加属性的文本都做同样操作,注意一定要选中文本才能生效。
如下图

大家可以在这里看到,富文本的样式例如背景色和前景色,等各个属性都可以在这里直接设置,而且各个文本的样式独立。基本能满足大家的需求,
另外大家也可以看到,缺点在于动态配置的文本是不可以直接在xib设置的。有动态配置的需求还是需要靠代码
网友评论