Swift NSMutableAttributeString,用于从字符串为NSTextView添加下标(上标)

Swift NSMutableAttributeString,用于从字符串为NSTextView添加下标(上标),swift,string,append,nstextview,nsmutableattributedstring,Swift,String,Append,Nstextview,Nsmutableattributedstring,是否存在在普通字符串中追加NSMutableAttributedString的方法 我想向NSTextView添加文本。这个特定的文本(字符串)引用了Double()变量,我想添加一些上下索引(下标和上标) 这是结构工程师的数学软件,输出是多行的大文本,我想知道,是否有更简单或更直接的方法来添加这些索引(A=5 m2(平方米)) 我无法强制使用数字下标字体字符(⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉), 因为在某些情况下,甚至有必要在字母或符号上加上子/上

是否存在在普通字符串中追加NSMutableAttributedString的方法

我想向NSTextView添加文本。这个特定的文本(字符串)引用了Double()变量,我想添加一些上下索引(下标和上标)

这是结构工程师的数学软件,输出是多行的大文本,我想知道,是否有更简单或更直接的方法来添加这些索引(A=5 m2(平方米))

我无法强制使用数字下标字体字符(⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉), 因为在某些情况下,甚至有必要在字母或符号上加上子/上标

我想知道是否有办法创建这样的属性字符串并添加到文本容器中

PS:我已经检查了这些答案(),但是我很难在字符串中使用它,比如下面的例子:

var x = Double()
var y = Double()
var z = Double()
x = 10
y = 5

z = x * y  // = 50
var str = String()
str = "Random text for example porpoises:\n\nHere comes calculation part\n\nA1 = \(z) m2"

print(str)
//Random text for example porpoises:
//
//Here comes calculation part
//
//A1 = 50 m2

//"1" in "A1" should be subscripted (A_1)
//"2" in "m2" should be superscripted (m^2)

我想知道如何添加这些子字符和上标字符,并将此属性字符串放到NSTextView中。我建议使用标准的
NSAttributedString
NSBaselineOffsetAttributeName
。看看我刚刚放在一起的示例:

override func viewDidLoad() {
    super.viewDidLoad()

    let label = NSTextView(frame: CGRect(x: 20, y: 20, width: 100, height: 30))
    let str = "A1 = 50 m2"

    let aString = NSMutableAttributedString(string: str)

    let myFont = NSFont(name: label.font!.fontName, size: 10.0)
    let subscriptAttributes: [String : Any] = [ NSBaselineOffsetAttributeName: -5, NSFontAttributeName:  myFont! ]
    let superscriptAttributes: [String : Any] = [ NSBaselineOffsetAttributeName: 5, NSFontAttributeName:  myFont! ]

    aString.addAttributes(subscriptAttributes, range: NSRange(location: 1, length: 1))
    aString.addAttributes(superscriptAttributes, range: NSRange(location: 9, length: 1))

    // Kerning adds a little spacing between all the characters.
    aString.addAttribute(NSKernAttributeName, value: 1.5, range: NSRange(location: 0, length: 2))
    aString.addAttribute(NSKernAttributeName, value: 1.5, range: NSRange(location: 8, length: 2))


    label.textStorage?.append(aString)

    view.addSubview(label)
}
结果如下:


UILabel和UIFont?这是一个Cocoa问题。真的有那么难翻译吗?我已经完成了所有艰苦的工作,谢谢你的帮助。我找不到任何关于如何将字符串值附加到NSMutableAtributedString的教程,或者什么都找不到,但你的回答给了我足够的想法和解决方案。再次感谢。