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)]));