ios objective-c nsstring drawinrect

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