ios nsstring ios7

ios - alinee el texto usando drawInRect: withAttributes:



nsstring ios7 (2)

El código va de esa manera:

CGRect textRect = CGRectMake(x, y, length-x, maxFontSize); UIFont *font = [UIFont fontWithName:@"Courier" size:maxFontSize]; NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail; paragraphStyle.alignment = NSTextAlignmentRight; NSDictionary *attributes = @{ NSFontAttributeName: font, NSParagraphStyleAttributeName: paragraphStyle, NSForegroundColorAttributeName: [UIColor whiteColor]}; [text drawInRect:textRect withAttributes:attributes];

En la versión iOS 5 de mi aplicación, tuve:

[self.text drawInRect: stringRect withFont: [UIFont fontWithName: @"Courier" size: kCellFontSize] lineBreakMode: NSLineBreakByTruncatingTail alignment: NSTextAlignmentRight];

Estoy actualizando para iOS 7. El método anterior está en desuso. Ahora estoy usando drawInRect: withAttributes:. El parámetro de atributos es un objeto NSDictionary. Puedo obtener drawInRect: withAttributes: para trabajar con el parámetro de fuente anterior usando esto:

UIFont *font = [UIFont fontWithName: @"Courier" size: kCellFontSize]; NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys: font, NSFontAttributeName, nil]; [self.text drawInRect: stringRect withAttributes: dictionary];

¿Qué pares clave-valor agrego al diccionario para obtener NSLineBreakByTruncatingTail y NSTextAlignmentRight ?


Hay una clave para establecer el estilo de párrafo del texto (incluido el modo de corte de línea, la alineación de texto y más).

De docs :

NSParagraphStyleAttributeName

El valor de este atributo es un objeto NSParagraphStyle . Use este atributo para aplicar múltiples atributos a un rango de texto. Si no especifica este atributo, la cadena utiliza los atributos de párrafo predeterminados, tal como lo devuelve el método NSParagraphStyle de NSParagraphStyle .

Por lo tanto, puedes probar lo siguiente:

UIFont *font = [UIFont fontWithName:@"Courier" size:kCellFontSize]; /// Make a copy of the default paragraph style NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; /// Set line break mode paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail; /// Set text alignment paragraphStyle.alignment = NSTextAlignmentRight; NSDictionary *attributes = @{ NSFontAttributeName: font, NSParagraphStyleAttributeName: paragraphStyle }; [text drawInRect:rect withAttributes:attributes];