答案 0 :(得分:0)
使用这些字符串文字,它不是字符位置或字体大小的问题。这些是特殊的unicode superscript/subscript characters。如果您转到macOS键盘首选项并在菜单栏"中选择"显示键盘和表情符号查看器,您将在菜单栏中显示一个新选项"显示表情符号&符号&#34 ;.然后,您可以输入" 2"在搜索框中,您将看到"相关字符中的下标和上标格式"部分:
所以,这不是一般的下标/下标功能,而只是几个普通下标/上标的专用unicode字符(例如" 2"," x"等)
请注意,如果您需要对字体,基线调整等进行更细粒度的控制,许多用户界面控件都支持使用属性字符串,例如:
let bigFont = UIFont.systemFont(ofSize: 20)
let smallFont = UIFont.systemFont(ofSize: 12)
let title = NSMutableAttributedString(string: "foo", attributes: [.font: bigFont])
title.append(NSMutableAttributedString(string: "bar", attributes: [.font: smallFont, .baselineOffset: 10]))
button.setAttributedTitle(title, for: .normal)
产量:
或者,正如in this answer所述,您显然也可以这样做:
let string = "foobar"
let range = NSRange(location: 3, length: 3)
let title = NSMutableAttributedString(string: string)
let superscript = NSAttributedStringKey(rawValue: kCTSuperscriptAttributeName as String)
title.addAttributes([superscript: 1], range: range) // Use 1 for superscript; use -1 for subscript
但是你的代码片段显然只是使用预定义的unicode上标/下标字符。但是,如果你需要渲染unicode中已经不存在的东西,这些不同的编程方法会很有用。