objective c - Al establecer la fuente en NSAttributedString en UITextView se ignora el espaciado entre lĂneas
objective-c ios6 (4)
Encontré tu pregunta porque también estaba peleando con NSAttributedString. Para mí, los métodos beginEditing
y endEditing
hicieron el truco, como se establece en Cambiar una cadena atribuida . Aparte de eso, lineSpacing se establece con setLineSpacing
en el paragraphStyle.
Por lo que es posible que desee intentar cambiar su código a:
NSString *string = @" Hello /n world";
attrString = [[NSMutableAttributedString alloc] initWithString:string];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
[paragraphStyle setLineSpacing:20] // Or whatever (positive) value you like...
[attrSting beginEditing];
[attrString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:20] range:NSMakeRange(0, string.length)];
[attrString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, string.length)];
[attrString endEditing];
mainTextView.attributedText = attrString;
No probé este código exacto, por cierto, pero el mío se ve casi igual.
EDITAR:
Mientras tanto, lo he probado y, - beginEditing
si me equivoco, las - beginEditing
y - endEditing
parecen ser de gran importancia.
Estoy tratando de establecer una cadena atribuida a una UITextView en iOS 6. El problema es que si intento establecer la propiedad de fuente en la cadena atribuida, se ignora el espaciado entre líneas. Sin embargo, si no configuro la fuente y se usa la fuente predeterminada, el espaciado de línea funciona.
NSString *string = @" Hello /n world";
attrString = [[NSMutableAttributedString alloc] initWithString:string];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
paragraphStyle.minimumLineHeight = 50;
// setting the font below makes line spacing become ignored
[attrString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:20] range:NSMakeRange(0, string.length)];
[attrString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, string.length)];
mainTextView.attributedText = attrString;
¿Tienes idea de lo que está pasando?
Hubo un error en iOS 6, que hace que la altura de la línea se ignore cuando se establece la fuente. Vea la respuesta al espacio entre líneas NSParagraphStyle ignorado y un análisis de errores más largo en Radar: UITextView omite la altura mínima / máxima de línea en la cadena atribuida .
Guía de programación de cadenas atribuidas:
UIFont *font = [UIFont fontWithName:@"Palatino-Roman" size:14.0];
NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObject:font
forKey:NSFontAttributeName];
NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:@"strigil" attributes:attrsDictionary];
Actualización: Intenté usar el método addAttribute:
en mi propia aplicación, pero parecía que no funcionaba en el simulador de iOS 6:
NSLog(@"%@", textView.attributedText);
El registro parece mostrar correctamente los atributos agregados, pero la vista en el simulador de iOS no se mostró con atributos.
//For proper line spacing
NSString *text1 = @"Hello";
NSString *text2 = @"/nWorld";
UIFont *text1Font = [UIFont fontWithName:@"HelveticaNeue-Medium" size:10];
NSMutableAttributedString *attributedString1 =
[[NSMutableAttributedString alloc] initWithString:text1 attributes:@{ NSFontAttributeName : text1Font }];
NSMutableParagraphStyle *paragraphStyle1 = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle1 setAlignment:NSTextAlignmentCenter];
[paragraphStyle1 setLineSpacing:4];
[attributedString1 addAttribute:NSParagraphStyleAttributeName value:paragraphStyle1 range:NSMakeRange(0, [attributedString1 length])];
UIFont *text2Font = [UIFont fontWithName:@"HelveticaNeue-Medium" size:16];
NSMutableAttributedString *attributedString2 =
[[NSMutableAttributedString alloc] initWithString:text2 attributes:@{NSFontAttributeName : text2Font }];
NSMutableParagraphStyle *paragraphStyle2 = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle2 setLineSpacing:4];
[paragraphStyle2 setAlignment:NSTextAlignmentCenter];
[attributedString2 addAttribute:NSParagraphStyleAttributeName value:paragraphStyle2 range:NSMakeRange(0, [attributedString2 length])];
[attributedString1 appendAttributedString:attributedString2];