[使用属性字符串填充UITextView时,字符串中的制表符未将文本与我尝试设置的制表符对齐。
字符串的第一行是标头(粗体系统字体),没有制表位(或制表符),其余行用斜体表示,并且每行应有两个制表位。这些行中有两个制表符,用于使文本与制表位的预定位置对齐。
但是,当我将属性字符串分配给文本视图的attribtuedText
时,后面的行会以斜体显示为OK,但是制表符停止位似乎会被忽略。选项卡字符显然在默认选项卡处停止了文本,好像我从未设置任何选项卡处一样。
我的代码在下面,标签的实现受以下启发:How do I add tab stops to an NSAttributedString and display in a UITextView
我在做什么错,我应该如何使其按预期工作?
let str = "\t1555445\tSomethings\n\t10\tOther Things\n\t2882\tOf Something Else"
let paraStyle = NSMutableParagraphStyle()
let rightTab = NSTextTab(textAlignment: .right, location: 100, options: [:])
let leftTab = NSTextTab(textAlignment: .left, location: 150, options: [:])
paraStyle.addTabStop(rightTab)
paraStyle.addTabStop(leftTab)
let headingAttrs = [NSAttributedString.Key.foregroundColor: UIColor.label,
NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 14),
]
let attrs = [NSAttributedString.Key.foregroundColor: UIColor.label,
NSAttributedString.Key.font: UIFont.italicSystemFont(ofSize: 14),
NSAttributedString.Key.paragraphStyle: paraStyle,
]
let attrString = NSMutableAttributedString(string: "Some Heading:\n\n" , attributes: headingAttrs as [NSAttributedString.Key : Any])
attrString.append(NSAttributedString(string: str, attributes: attrs as [NSAttributedString.Key : Any]))
someTextView.attributedText = attrString
以下是一些截图说明了此问题。 (这些是在页面中创建的模型,而不是直接将内容添加到UITTextView的模型,因为我现在不在开发/测试环境中。)
我想要的是:
但是我得到的是:
查看文档会发现默认情况下,段落样式每28点都有一个制表位。
所以,与其简单地添加制表位:
paraStyle.addTabStop(rightTab) paraStyle.addTabStop(leftTab)
我应该将所有默认的制表位替换为:
paraStyle.tabStops = [rightTab,leftTab]