我在 xcode 中的应用程序有一个带有一些产品数据的表格视图。我的一款产品的名称中有一个上标 e。如何在字符串中使用上标字符,例如: text e
我可以让它处理数字: text\u2070 -> text 0或 text\u2071 -> text 1。但是如何处理其他角色呢?
谢谢!
我在 xcode 中的应用程序有一个带有一些产品数据的表格视图。我的一款产品的名称中有一个上标 e。如何在字符串中使用上标字符,例如: text e
我可以让它处理数字: text\u2070 -> text 0或 text\u2071 -> text 1。但是如何处理其他角色呢?
谢谢!
tl;dr: NSString 不支持超级/子脚本的概念。这或多或少是一个 UI 格式问题。
一种可能的解决方案是在代码中动态添加 UILabel 而不是界面构建器。您可以添加第二个 UILabel,其字体大小较小。
添加 CoreText 框架,导入 CoreText.h,并使用 UIlabel.attributedText - 它完全支持 NSAttributedString。已经在SO上反复询问和回答。
对于下标,使用 kCTSuperscriptAttributeName 的值为@-1。
根据文件
@discussion 值必须是 CFNumberRef。默认值为 int 值 0。如果指定字体支持,值 1 启用上标,值 -1 启用下标。
extern const CFStringRef kCTSuperscriptAttributeName CT_AVAILABLE(10_5, 3_2);
Example- [lblHeader setText:@“Headers [Alpha1 – text”];
NSMutableAttributedString *headerSubscript = [[NSMutableAttributedString alloc]initWithAttributedString: lblHeader.attributedText];
[headerSubscript addAttribute:(NSString *)kCTSuperscriptAttributeName value:@-1 range:NSMakeRange(14,1)];
[lblHeader setAttributedText:headerSubscript];