如何在iOS中创建不在Unicode中的下标字符

Xri*_*eaz 13 iphone cocoa-touch objective-c nsstring ios

我已经尝试了一段时间来创建一个带有下标字符的NSString而没有成功.甚至可以在iOS中执行此操作吗?
我需要一种方法来改变一个字符串标或下标字符,我不能使用Unicode此为Unicode不具备所有的信件.
我的猜测可能是使用HTML标签<sub>,<sup>但我还没有找到将所述HTML标签转换为NSString的方法.

jay*_*355 17

我无法使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];
Run Code Online (Sandbox Code Playgroud)

这给你: 在此输入图像描述

通过label.attributedText将属性String分配给标签是6.0的新功能,但设置属性字符串的方式可能适用于早期版本的iOS.

向kCTSuperscriptAttributeName发送负值会给您一个下标.

不要忘记添加CoreText框架.


Sev*_*yev 10

下标和上标不是人物特征.除了少数例外(例如²,³,ª),这就是常规字符的呈现方式 - 以较小的字体和常规字符的基线上/下.考虑到这一点,你不能拥有"带有下标字符的NSString",只不过你可以拥有一个带粗体或斜体字符的NSString.

因此,除非Unicode中已存在所需的下标字符,否则在字符串呈现时创建下标和上标,而不是在字符串创建上创建.这不是iOS的限制,这是现代计算机中字符串处理方式的限制.

你对那个NSString做了什么?你在UILabel上展示它吗?你是通过网络发送的吗?你把它渲染成HTML吗?需要注意的是<sub><sup>是HTML标签; 除非NSString被特别解释为HTML(例如,通过UIWebView),否则它们不会被解释为sup/superscript.

  • 我使用了'UIWebView`和`loadHTMLstring:baseURL:`函数.我想知道我是否应该为此发布答案. (2认同)
  • @SevaAlekseyev UILabel可以使用支持子/超级脚本的attributionString (2认同)