Intentar mostrar texto super / subíndice usando NSAttributedString en un UITextView parece roto en iOS13, a menos que alguien sepa lo contrario.

Curiosamente, si utilizo la fuente del sistema UIFont, entonces funciona, pero si utilizo cualquier otra fuente, no funciona.

Vea a continuación mi código para configurar un UITextView en mi aplicación de prueba.

- (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);    
}
3
Scotty 9 oct. 2019 a las 11:49

1 respuesta

La mejor respuesta

"Arreglo" simple para éste.

Parece que kCTSuperscriptAttributeName ya no funciona en iOS13 (para fuentes que no son del sistema). En su lugar, debe usar NSSuperscriptAttributeName. No tengo idea de dónde reside la definición de esto (qué encabezado), por lo que el valor de cadena real requerido es "NSSuperScript"

4
Scotty 11 oct. 2019 a las 08:29