Dans la version iOS 5 de mon application, j'avais:
[self.text drawInRect: stringRect
withFont: [UIFont fontWithName: @"Courier" size: kCellFontSize]
lineBreakMode: NSLineBreakByTruncatingTail
alignment: NSTextAlignmentRight];
Je mets à niveau pour iOS 7. La méthode ci-dessus est déconseillée. J'utilise maintenant drawInRect: withAttributes:. Le paramètre attributs est un objet NSDictionary. Je peux obtenir drawInRect: withAttributes: pour travailler avec l'ancien paramètre font en utilisant ceci:
UIFont *font = [UIFont fontWithName: @"Courier" size: kCellFontSize];
NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys: font, NSFontAttributeName,
nil];
[self.text drawInRect: stringRect
withAttributes: dictionary];
Quelles paires de valeurs-clés dois-je ajouter à dictionnaire pour obtenir NSLineBreakByTruncatingTail et NSTextAlignmentRight?
Il existe une clé pour définir le style de paragraphe du texte (y compris le mode de saut de ligne, l'alignement du texte, etc.).
De docs :
NSParagraphStyleAttributeName
La valeur de cet attribut est un objet
NSParagraphStyle
. Utilisez cet attribut pour appliquer plusieurs attributs à une plage de texte. Si vous ne spécifiez pas cet attribut, la chaîne utilise les attributs de paragraphe par défaut, tels que renvoyés par la méthodedefaultParagraphStyle
deNSParagraphStyle
.
Vous pouvez donc essayer ce qui suit:
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];
Le code va dans ce sens:
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];