Je travaille sur une nouvelle version de mon application et j'essaie de remplacer les messages obsolètes, mais je ne parviens pas à dépasser celui-ci.
Je n'arrive pas à comprendre pourquoi drawInRect:withAttributes
ne fonctionne pas. Le code s'affiche correctement lorsque drawInRect:withFont:lineBreakMode:alignment
un message est envoyé, mais ne fonctionne pas lorsque drawInRect:withAttributes
est envoyé.
J'utilise le même rect et la même police et je pense que c'est le même style de texte. Les constantes positionnent simplement le rect juste en dessous d'une image, mais j'utilise le même rect pour les deux appels, donc je suis certain que le rectangle est correct.
(notez que bs.name utilisé ci-dessous est un objet 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];
Cela ne fonctionne pas (rien n'est dessiné à l'écran) en utilisant les variables d'en haut
[bs.name drawInRect:textRect
withAttributes:@{NSFontAttributeName:textFont,
NSParagraphStyleAttributeName:textStyle}];
Cela fonctionne (la chaîne est dessinée correctement à l'écran) en utilisant les mêmes variables que ci-dessus
[bs.name drawInRect:textRect
withFont:textFont
lineBreakMode:NSLineBreakByWordWrapping
alignment:NSTextAlignmentCenter];
Toute aide serait formidable. Merci.
Pour définir la couleur du texte, vous devez passer le NSForegroundColorAttributeName
dans l'attribut comme paramètre supplémentaire.
NSDictionary *dictionary = @{ NSFontAttributeName: self.font,
NSParagraphStyleAttributeName: paragraphStyle,
NSForegroundColorAttributeName: self.textColor};
J'ai fait un UIView
avec drawRect:
contenant uniquement le code que vous avez fourni
- (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];
}
Je ne vois aucune différence entre les sorties de ces deux méthodes. Peut-être que le problème est ailleurs dans votre code?