Attributed String en Swift: cuando el texto normal no es suficiente
¿Alguna vez te has preguntado por qué en algunas aplicaciones el texto parece una sábana gris y aburrida, mientras que en otras parece una obra de arte? El secreto es simple: attributed string. Es la herramienta más poderosa del desarrollador iOS, que permite controlar cada píxel del texto: color, fuente, espaciado, sombras e incluso enlaces interactivos.
En este artículo, analizaremos cómo crear NSAttributedString en Swift, cómo configurarlo y dónde aplicarlo. No solo aprenderás datos secos, sino técnicas reales que harán que tu aplicación sea más bonita y fácil de usar. ¡Vamos allá!
¿Qué es Attributed String? La base que debes conocer
En un String clásico, todos los caracteres son iguales: una fuente, un color, un tamaño. NSAttributedString (y su versión mutable NSMutableAttributedString) es una cadena donde cada carácter o rango de caracteres puede tener su propio conjunto de atributos. Imagina que escribes la palabra «Hola»: la letra «H» es roja y negrita, la «o» es azul y cursiva, y así sucesivamente. ¿Suena a magia? No, es simplemente Swift attributed string.
¿Dónde se usa esto en aplicaciones reales?
- Editores de texto (resaltado en negrita, cursiva)
- Redes sociales (menciones @username cliqueables y resaltadas en color)
- Aplicaciones de chat (diferentes colores para diferentes usuarios)
- Libros electrónicos (diferentes fuentes para títulos y citas)
- Cualquier interfaz donde el texto no sea solo texto, sino un elemento de diseño
Cómo crear NSAttributedString en Swift: de lo simple a lo complejo
Comencemos con un ejemplo básico. En Swift, crear un attributed string es un proceso en el que defines un diccionario de atributos y lo aplicas al texto.
Ejemplo 1: Attributed string muy simple
import UIKit
let plainText = "Hello, Swift!"let attributes: [NSAttributedString.Key: Any] = [ .foregroundColor: UIColor.red, .font: UIFont.boldSystemFont(ofSize: 18)]let attributedString = NSAttributedString(string: plainText, attributes: attributes)
// Usamos en UILabellet label = UILabel()label.attributedText = attributedStringEn este ejemplo, creamos una cadena donde todo el texto es de color rojo, con fuente negrita de 18pt. Observa NSAttributedString.Key — es la enumeración de todos los atributos posibles. Hay decenas, y veremos los más útiles.
Ejemplo 2: Diferentes atributos para diferentes partes del texto
Aquí es donde comienza la diversión real. Usamos NSMutableAttributedString:
let mutableString = NSMutableAttributedString(string: "Esto es negrita, y esto es texto rojo")
// Aplicamos fuente negrita a los primeros 10 caracteresmutableString.addAttribute(.font, value: UIFont.boldSystemFont(ofSize: 16), range: NSRange(location: 0, length: 10))
// Aplicamos color rojo a los últimos 15 caracteresmutableString.addAttribute(.foregroundColor, value: UIColor.red, range: NSRange(location: 14, length: 15))
// Usamos en UITextViewlet textView = UITextView()textView.attributedText = mutableStringImportante: NSRange trabaja con posiciones de caracteres, no con índices de Swift. Ten cuidado, especialmente con emojis y caracteres multibyte.
Top 10 atributos que usarás todos los días
Aquí tienes una lista de las claves que usarás más a menudo al trabajar con NSAttributedString Swift:
.font— fuente (UIFont).foregroundColor— color del texto.backgroundColor— fondo del texto.underlineStyle— subrayado (NSUnderlineStyle).strikethroughStyle— tachado.paragraphStyle— p