如何显示"®"注册符号的上标?

ill*_*tus 13 iphone unicode special-characters uilabel

关于将注册符号显示为上标我有一个问题.我使用了unicode值\ u00AE,但它显示在同一行.我想把它留在剩下的文本中.完成谷歌搜索,但发现AZ的上标,0-9个字符,这在unicode的网站中提到.

示例代码:

UILabel *myLabel; //do initialize stuff here

myLabel.text = @"My company\u00AE";
Run Code Online (Sandbox Code Playgroud)

谢谢

sor*_*rin 21

Unicode没有registered上标形式的符号,因此唯一的方法是使用HTML控件并将其包含在上标标签中:<sup>&reg;</sup>

你可以在http://rishida.net/scripts/uniview/查看.

  • 我使用的将 ® 显示为上标的好字体是“Avenir Next” (3认同)
  • 问题是:(R)上标与否是字体设计问题.使用<sup>®</ sup>和已经"superscripts"®的字体(例如Consolas),最终得到一个不可读的blob. (2认同)

Int*_*uff 8

从iOS6开始,您实际上可以将NSAttributedString与UILabel一起使用.

要为注册商标符号设置上标,您可以使用以下类别:

#import <CoreText/CTStringAttributes.h>
#import "UILabel+ SetSuperScriptForRegisteredTrademarkSymbol.h"

@implementation UILabel (SetSuperScriptForRegisteredTrademarkSymbol)

- (void) setSuperScriptForRegisteredTrademarkSymbol {

    NSMutableAttributedString *mutableAttributedString = [[NSMutableAttributedString alloc] initWithString:self.text];

    NSUInteger count = 0, length = [mutableAttributedString length];
    NSRange range = NSMakeRange(0, length);

    while(range.location != NSNotFound)
    {
        range = [[mutableAttributedString string] rangeOfString:@"®" options:0 range:range];
        if(range.location != NSNotFound) {
            [mutableAttributedString addAttribute:(NSString*)kCTSuperscriptAttributeName value:@"1" range:range];
            range = NSMakeRange(range.location + range.length, length - (range.location + range.length));
            count++;
        }
    }

    self.attributedText = mutableAttributedString;
}

@end
Run Code Online (Sandbox Code Playgroud)