1、富文本的相关属性字段: NSAttributedString.Key
(1)paragraphStyle
let paraStyle = NSMutableParagraphStyle()
paraStyle.alignment = .center
paraStyle.lineSpacing = 20
paraStyle.lineBreakMode = .byWordWrapping
lineBreakMode
只有当文本内容超出容器大小时才会起作用。
byWordWrapping: 默认,文本换行以work为单位byCharWrapping: 文本换行以char为单位,当行尾的一个word放不下时,会按字符分开该word放到下一行byClipping: 整体以word为换行单位,到最后一行仍放不下文本时,会截去多余的部分,可能导致word被拆分byTruncatingHead/Middle/Tail: 最后一行还不能装下文本时,开头/中间/结尾用...表示
(2)baselineOffset
首先了解一下font的各个属性,日常初始化设置的是pointSize的大小,即字体大小:

baselineOffset表示font的lineHeight和paragraphStyle的lineHeight上边界的垂直距离,设置之前一般通过paragraphStyle的maximumLineHeight和minimumLineHeight指定行高。值设为(paraStyle.maximumLineHeight - label.font.lineHeight) / 4表示居中,至于为什么不除2,官方也没有很明确的解释,可能是由于约束问题。
(3)strokeColor & foregroundColor
二者配合使用可做出下面这种文本效果(需要注意的是strokeWidth需要为负值,否则不起效果):
let attributes: [NSAttributedString.Key: Any] = [
.strokeWidth: -3,
.strokeColor: UIColor.red,
.foregroundColor: UIColor.yellow
]

2、初始化NSAttributedString
通过string和attributes初始化的NSAttributedString后续无法添加属性,需要用到NSMutableAttributedString。
本文详细介绍了NSAttributedString的关键属性,包括paragraphStyle的lineBreakMode、baselineOffset以及strokeColor和foregroundColor的组合使用。通过实例展示了如何设置文本居中、行间距以及创建描边效果。同时,文章强调了NSMutableAttributedString在需要修改属性时的重要性。
594

被折叠的 条评论
为什么被折叠?



