ios nsattributedstring

ios - Ejemplo de NSAttributedString con dos tamaños de fuente diferentes?



nsattributedstring swift 4 (4)

NSAttributedString es realmente impenetrable para mí.

Quiero configurar un UILabel para que tenga texto de diferentes tamaños, y supongo que NSAttributedString es el camino a seguir, pero no puedo llegar a ninguna parte con la documentación sobre esto.

Me encantaría que alguien pudiera ayudarme con un ejemplo concreto.

Por ejemplo, digamos que el texto que quería era:

(in small letters:) "Presenting The Great..." (in huge letters:) "HULK HOGAN!"

¿Puede alguien mostrarme cómo hacer eso? ¿O incluso, una referencia que es simple y clara en la que podría aprender por mí mismo? Juro que traté de entender esto a través de la documentación, e incluso a través de otros ejemplos en Stack Overflow, y simplemente no lo entiendo.


Harías algo como esto ...

NSMutableAttributedString *hogan = [[NSMutableAttributedString alloc] initWithString:@"Presenting the great... Hulk Hogan!"]; [hogan addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:20.0] range:NSMakeRange(24, 11)];

Esto establecerá las dos últimas palabras en texto de 20 puntos; el resto de la cadena usará el valor predeterminado (que creo que es 12 puntos). Lo que puede ser confuso al establecer el tamaño del texto es que debe establecer el tipo de letra y el tamaño al mismo tiempo: cada objeto UIFont encapsula ambas propiedades.


Si quiere hacerlo de la manera más fácil, hay un repositorio git llamado OHAttributedLabel que uso que proporciona una categoría en NSAttributedString. Te permite hacer cosas como:

NSMutableAttributedString *mystring = [[NSMutableAttributedString alloc] initWithString:@"My String"]; [mystring setTextColor:[UIColor colorWithRGB:78 green:111 blue:32 alpha:1]]; mystring.font = [UIFont systemFontOfSize:14];

Si no desea utilizar una lib de terceros, consulte este enlace para obtener un tutorial decente sobre cómo comenzar con las cadenas atribuidas.


Solución Swift 3

Además, puede usar la función de append lugar de especificar índices en ObjC o Swift:

let attrString = NSMutableAttributedString(string: "Presenting The Great...", attributes: [ NSFontAttributeName: UIFont.systemFont(ofSize: 20) ]) attrString.append(NSMutableAttributedString(string: "HULK HOGAN!", attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 40) ]))


Solución Swift 4:

let attrString = NSMutableAttributedString(string: "Presenting The Great...", attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 18)])); attrString.append(NSMutableAttributedString(string: "HULK HOGAN!", attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 36)]));