El formato de mi textViews trabajó muy bien en iOS 6, pero ya no en iOS 7. Entiendo que con el Texto Kit de gran parte de la virtud de la campana de cosas ha cambiado. Es realmente muy confuso, y espero que alguien pueda ayudar a enderezar un poco por ayudarme con algo tan simple como esto.

Mi estático UITextView originalmente se le asignó un valor por textColor y textAlignment propiedades. Luego me hizo un NSMutableAttributedString, le asignamos un atributos, a continuación, se asigna a la textView del attributedText de la propiedad. La alineación y el color ya no se llevará a efecto en iOS 7.

¿Cómo puedo solucionar este problema? Si estas propiedades no tomar efecto, que ¿por qué existe? Aquí está la creación de la textView:

UITextView *titleView = [[UITextView alloc]initWithFrame:CGRectMake(0, 90, 1024, 150)];
titleView.textAlignment = NSTextAlignmentCenter;
titleView.textColor = [UIColor whiteColor];

NSMutableAttributedString *title = [[NSMutableAttributedString alloc]initWithString:@"Welcome"];
UIFont *font = [UIFont fontWithName:@"Avenir-Light" size:60];
[title addAttribute:NSParagraphStyleAttributeName value:font range:NSMakeRange(0, title.length)];
titleView.attributedText = title;

[self.view addSubview:titleView];
InformationsquelleAutor Joe | 2013-10-12

1 Comentario

  1. 66

    Curioso, las propiedades que se toman en cuenta para UILabel pero no para UITextView

    ¿Por qué no acaba de agregar atributos de color y la alineación a la atribuida cadena similar a la forma en que están haciendo con la fuente?

    Algo como:

    NSMutableAttributedString *title = [[NSMutableAttributedString alloc]initWithString:@"Welcome"];
    UIFont *font = [UIFont fontWithName:@"Avenir-Light" size:60];
    [title addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, title.length)];
    
    //add color
    [title addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, title.length)];
    
    //add alignment
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    [paragraphStyle setAlignment:NSTextAlignmentCenter];
    [title addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, title.length)];
    
    titleView.attributedText = title;

    Edición: Asignar primero el texto y, a continuación, cambie las propiedades y de esta manera se trabaja.

    UITextView *titleView = [[UITextView alloc]initWithFrame:CGRectMake(0, 90, 1024, 150)];
    
    //create attributed string and change font
    NSMutableAttributedString *title = [[NSMutableAttributedString alloc]initWithString:@"Welcome"];
    UIFont *font = [UIFont fontWithName:@"Avenir-Light" size:60];
    [title addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, title.length)];
    
    //assign text first, then customize properties
    titleView.attributedText = title;
    titleView.textAlignment = NSTextAlignmentCenter;
    titleView.textColor = [UIColor whiteColor];
    • Cuando hago esto, el NSFontAttributeName atributo parece ya no estar en efecto. Se centra fina, el color está bien, pero el tamaño de la fuente parece ser en tamaño del sistema. Traté de aplicar el atributo font pasado, después de la asignación de todos los demás atributos de la primera, y, curiosamente, la aplicación se bloquea con Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UICTFont textBlocks]: unrecognized selector sent to instance 0x8b1d1c0'.
    • Supongo que te refieres a la segunda alternativa (asignar primero el texto y, a continuación, modificar las propiedades), pero en ese ejemplo no me incluir la fuente de personalización, voy a modificarlo para incluir la totalidad de la muestra.
    • Ambos ejemplos de código de producir el mismo resultado para mí. Por lo que la asignación UITextView propiedades no parece ser necesario. Había una razón que poner?
    • Sí, ambas muestras debe producir el mismo resultado. Acabo de añadir la segunda forma (la personalización de UITextView propiedades), debido a que estaban preguntando por qué ellos no fueron tomadas en cuenta en su ejemplo. En mi opinión, me parece a mi primer ejemplo más claro de entender (sólo para trabajar con atribuido atributos de la cadena) en lugar de la mezcla de atributos y UITextView propiedades.
    • Ah ok. No llegar a la fuente de error que se describe en el primer comentario?
    • Gracias por el estupendo ejemplo.
    • Gracias por la sugerencia, en la edición

Dejar respuesta

Please enter your comment!
Please enter your name here