1

我在 xcode 中的应用程序有一个带有一些产品数据的表格视图。我的一款产品的名称中有一个上标 e。如何在字符串中使用上标字符,例如: text e

我可以让它处理数字: text\u2070 -> text 0或 text\u2071 -> text 1。但是如何处理其他角色呢?

谢谢!

4

3 回答 3

2

tl;dr: NSString 不支持超级/子脚本的概念。这或多或少是一个 UI 格式问题。

一种可能的解决方案是在代码中动态添加 UILabel 而不是界面构建器。您可以添加第二个 UILabel,其字体大小较小。

于 2012-05-09T08:49:08.707 回答
2

添加 CoreText 框架,导入 CoreText.h,并使用 UIlabel.attributedText - 它完全支持 NSAttributedString。已经在SO上反复询问和回答。

于 2013-09-16T07:41:56.770 回答
2

对于下标,使用 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];
于 2015-08-27T11:08:05.450 回答