ios - drawInRect: withAttributes vs drawInRect: withFont: lineBreakMode: alineación
objective-c nsstring (2)
He hecho una UIView
en UIView
con drawRect:
contiene solo el código que proporcionaste
- (void)drawRect:(CGRect)frame
{
NSMutableParagraphStyle *textStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
textStyle.lineBreakMode = NSLineBreakByWordWrapping;
textStyle.alignment = NSTextAlignmentCenter;
UIFont *textFont = [UIFont systemFontOfSize:16];
NSString *text = @"Lorem ipsum";
// iOS 7 way
[text drawInRect:frame withAttributes:@{NSFontAttributeName:textFont, NSParagraphStyleAttributeName:textStyle}];
// pre iOS 7 way
CGFloat margin = 16;
CGRect bottomFrame = CGRectMake(0, margin, frame.size.width, frame.size.height - margin);
[text drawInRect:bottomFrame withFont:textFont lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentCenter];
}
No veo ninguna diferencia entre los resultados de estos dos métodos. Tal vez el problema está en otro lugar en su código?
Estoy trabajando en una nueva versión de mi aplicación e intento reemplazar los mensajes desaprobados, pero no puedo superar esta.
No puedo entender por qué drawInRect:withAttributes
no está funcionando. El código se muestra correctamente cuando se drawInRect:withFont:lineBreakMode:alignment
mensaje de drawInRect:withFont:lineBreakMode:alignment
, pero no funciona cuando se drawInRect:withAttributes
.
Estoy usando el mismo rect y fuente y creo que es el mismo estilo de texto. Las constantes solo colocan el rect justo debajo de una imagen, pero estoy usando el mismo rect para ambas llamadas, así que estoy seguro de que el rectángulo es correcto.
(tenga en cuenta que bs.name utilizado a continuación es un objeto NSString)
CGRect textRect = CGRectMake(fCol*kRVCiPadAlbumColumnWidth,
kRVCiPadAlbumColumnWidth-kRVCiPadTextLabelYOffset,
kRVCiPadAlbumColumnWidth,
kRVCiPadTextLabelHeight);
NSMutableParagraphStyle *textStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
textStyle.lineBreakMode = NSLineBreakByWordWrapping;
textStyle.alignment = NSTextAlignmentCenter;
UIFont *textFont = [UIFont systemFontOfSize:16];
Esto no funciona (no se dibuja nada en la pantalla) usando las variables de arriba
[bs.name drawInRect:textRect
withAttributes:@{NSFontAttributeName:textFont,
NSParagraphStyleAttributeName:textStyle}];
Esto funciona (la cadena se dibuja correctamente en la pantalla) utilizando las mismas variables de arriba
[bs.name drawInRect:textRect
withFont:textFont
lineBreakMode:NSLineBreakByWordWrapping
alignment:NSTextAlignmentCenter];
Cualquier ayuda sería genial. Gracias.
Para establecer el color del texto, debe pasar el NSForegroundColorAttributeName
en el atributo como parámetro adicional.
NSDictionary *dictionary = @{ NSFontAttributeName: self.font,
NSParagraphStyleAttributeName: paragraphStyle,
NSForegroundColorAttributeName: self.textColor};