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étodoNSParagraphStyle
deNSParagraphStyle
.
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];