Super / Subscript, кажется, сломан в iOS13 (NSAttributedString) - PullRequest
0 голосов
/ 09 октября 2019

Попытка отобразить текст super / subscript с помощью NSAttributedString в UITextView кажется неудачной в 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);    
}

1 Ответ

0 голосов
/ 11 октября 2019

Простое «исправление» для этого.

Кажется, kCTSuperscriptAttributeName больше не работает в iOS13 (для несистемных шрифтов.) Вместо этого вам нужно использовать NSSuperscriptAttributeName. Не знаю, где находится определение для этого (какой заголовок), поэтому фактическое требуемое значение строки - «NSSuperScript»

...