objective-c ios6

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?



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