Bucle a través de Atributos de NSAttributedString para boost la densidad de fonts

Todo lo que necesito es recorrer todos los attributes de NSAttributedString y boost su tamaño de fuente. Hasta el momento llegué al punto en que recorría y manipulaba attributes con éxito, pero no puedo volver a NSAttributedString en NSAttributedString . La línea que comenté no está funcionando para mí. ¿Cómo ahorrar?

 NSAttributedString *attrString = self.richTextEditor.attributedText; [attrString enumerateAttributesInRange: NSMakeRange(0, attrString.string.length) options:NSAttributedStringEnumerationReverse usingBlock: ^(NSDictionary *attributes, NSRange range, BOOL *stop) { NSMutableDictionary *mutableAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes]; UIFont *font = [mutableAttributes objectForKey:NSFontAttributeName]; UIFont *newFont = [UIFont fontWithName:font.fontName size:font.pointSize*2]; [mutableAttributes setObject:newFont forKey:NSFontAttributeName]; //Error: [self.richTextEditor.attributedText setAttributes:mutableAttributes range:range]; //no interfacce for setAttributes:range: }]; 

Algo así debería funcionar:

 NSMutableAttributedString *res = [self.richTextEditor.attributedText mutableCopy]; [res beginEditing]; __block BOOL found = NO; [res enumerateAttribute:NSFontAttributeName inRange:NSMakeRange(0, res.length) options:0 usingBlock:^(id value, NSRange range, BOOL *stop) { if (value) { UIFont *oldFont = (UIFont *)value; UIFont *newFont = [oldFont fontWithSize:oldFont.pointSize * 2]; [res removeAttribute:NSFontAttributeName range:range]; [res addAttribute:NSFontAttributeName value:newFont range:range]; found = YES; } }]; if (!found) { // No font was found - do something else? } [res endEditing]; self.richTextEditor.attributedText = res; 

En este punto, res tiene una nueva cadena atribuida con todas las fonts dos veces su tamaño original.

Cree un NSMutableAttributedString desde su cadena atribuida original antes de comenzar. En cada iteración del ciclo, llame a addAttribute:value:range: en la cadena mutable atribuida (esto replaceá a los antiguos attributes en ese range).