如何在 Xcode 字符串文字中键入 subscripts/superscripts?
How to type subscripts/superscripts in Xcode string literals?
我在 Xcode 编辑器中看到了这段代码:
如何使用不同的字符位置和字体大小键入这些字符串?
使用这些字符串文字,这不是字符位置或字体大小的问题。这些很特别 unicode superscript/subscript characters。如果您转到 macOS 键盘首选项并选择 "Show keyboard and emoji viewers in menu bar",您的菜单栏中将有一个新选项 "Show emoji & symbols"。然后,例如,您可以在搜索框中键入“2”,然后您将在 "related characters" 部分看到下标和上标再现:
因此,这不是一般的 subscript/subscripting 功能,而是一些常见 subscripts/superscripts(例如“2”、"x" 等)的专用 unicode 字符。
请注意,如果您需要对字体、基线调整等进行更细粒度的控制,许多用户界面控件都支持使用属性字符串,例如:
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 superscript/subscript 字符。但是,如果您需要呈现 unicode 中尚不存在的内容,那么这些不同的编程方法可能很有用。
我在 Xcode 编辑器中看到了这段代码:
如何使用不同的字符位置和字体大小键入这些字符串?
使用这些字符串文字,这不是字符位置或字体大小的问题。这些很特别 unicode superscript/subscript characters。如果您转到 macOS 键盘首选项并选择 "Show keyboard and emoji viewers in menu bar",您的菜单栏中将有一个新选项 "Show emoji & symbols"。然后,例如,您可以在搜索框中键入“2”,然后您将在 "related characters" 部分看到下标和上标再现:
因此,这不是一般的 subscript/subscripting 功能,而是一些常见 subscripts/superscripts(例如“2”、"x" 等)的专用 unicode 字符。
请注意,如果您需要对字体、基线调整等进行更细粒度的控制,许多用户界面控件都支持使用属性字符串,例如:
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 superscript/subscript 字符。但是,如果您需要呈现 unicode 中尚不存在的内容,那么这些不同的编程方法可能很有用。