如何在iOS中创build不使用Unicode的下标字符

我一直在尝试一段时间来创build一个NSString的下标字符没有成功。 是否有可能在iOS中做到这一点?
我需要一种方法来将string中的字符更改为下标或上标,并且由于Unicode不具有所有字母,因此无法使用Unicode。
我的猜测可能是使用HTML标签<sub><sup>但我没有find一种方法将所述HTML标签转换为NSString。

下标和上标不是性格特征。 除了less数例外(例如,²,³,ª),这是常规字符呈现的方式 – 以较小的字体和常规字符的基线之上/之下。 考虑到这一点,你不能有一个带有下标字符的“NSString”,不过你可以有一个带有粗体或斜体字符的NSString。

因此,除非已经在Unicode中存在所需的下标字符,否则将在string渲染上创build下标和上标,而不是在string创build上创build。 这不是iOS的限制,这是在现代计算机中处理string的方式的限制。

你对那个NSString做什么? 你在UILabel上显示吗? 你通过networking发送? 你把它呈现为HTML吗? 请注意, <sub><sup>是HTML标签; 除非NSString被特别解释为HTML(例如,通过UIWebView),否则它们不会被解释为sup / superscript。

我无法获得NSSuperscriptAttributeName的工作,但有以下成功:

 UILabel *label = [[UILabel alloc] init]; NSString *string = @"abcdefghi"; NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:string]; NSInteger num1 = 1; CFNumberRef num2 = CFNumberCreate(NULL, kCFNumberNSIntegerType, &num1); [attrString addAttribute:(id)kCTSuperscriptAttributeName value:(id)num2 range:NSMakeRange(4,2)]; label.attributedText = attrString; [attrString release]; 

这给你: 在这里输入图像说明

通过label.attributedText为属性string分配标签是6.0的新增function,但设置属性string的方式可能适用于早期版本的iOS。

发送一个负值给kCTSuperscriptAttributeName给你一个下标。

不要忘记添加CoreText框架。

有一个组件可以做到,通过NSString和UILabel上的一些类别。 虽然这可能是你的情况矫枉过正:

 NSString *stringWithTags = @"<b>Bold</b> <sup>sup</sup> <sub>sub</sub> <u>Under</u> <strike>strike</strike> <i>Italic</i> <small>small</small> <b><u>U+B</u></b>"; NSAttributedString *attributedString = [[RCTagProcessor defaultInstance] attributedStringForText:stringWithTags]; 

或者你可以马上在标签上设置文字:

 [self.label rc_setTaggedText:stringWithTags]; 

https://github.com/gebeleysis/RCTagProcessing