Super/Subscript 似乎在 iOS13 中被破坏 (NSAttributedString)

Super/Subscript appear to be broken in iOS13 (NSAttributedString)

尝试在 UITextView 中使用 NSAttributedString 显示 super/subscript 文本似乎在 iOS13 中被破坏了 - 除非有人知道否则?

奇怪的是,如果我使用 UIFont systemFont,它就可以工作 - 但如果我使用任何其他字体,它就不会。

在我的测试应用程序中设置 UITextView 的代码见下文。

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIFont* font = [UIFont systemFontOfSize:32];
    //UIFont* font = [UIFont fontWithName:@"Helvetica Neue" size:32];
    //UIFont* font = [UIFont fontWithName:@"Courier" size:32];
    //UIFont* font = [UIFont fontWithName:@"Arial" size:32];

    NSMutableAttributedString* as = [[NSMutableAttributedString alloc] initWithString:@"Super2Script" attributes:@{NSFontAttributeName : font}];

    [as addAttribute:(NSString*)kCTSuperscriptAttributeName value:@(1) range:NSMakeRange(5, 1)];



    UITextView* tv = [[UITextView alloc] initWithFrame:CGRectZero];
    tv.attributedText = as;
    [tv sizeToFit];

    [self.view addSubview:tv];
    tv.center = CGPointMake(self.view.bounds.size.width / 2, self.view.bounds.size.height / 2);    
}

简单 'fix' 这个。

kCTSuperscriptAttributeName 似乎不再适用于 iOS13(对于 non-system 字体。)您需要改用 NSSuperscriptAttributeName。不知道这个定义在哪里(header)所以实际需要的字符串值是 "NSSuperScript"