2

我正在使用 DrawRect 方法绘制一些文本,但不知道如何将这些文本向右对齐。

我知道在界面生成器中您可以指定对齐方式,所以我知道这是可能的,但我似乎无法弄清楚我自己。

在这一点上的任何帮助都非常有帮助。

非常感谢!

    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:[NSFont fontWithName:@"AvenirNext-UltraLight" size:12], NSFontAttributeName, [NSColor redColor], NSForegroundColorAttributeName, nil];
    NSAttributedString * newEmail = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%d", newUnreadEmail] attributes:attributes];
    [newEmail drawAtPoint:NSMakePoint(140, 600)];
4

2 回答 2

3

您需要进行数学运算来计算正确对齐的正确点。用于[newEmail size]计算属性字符串的宽度,从您希望在其中绘制它的矩形的宽度中减去它,然后将差值添加到您传递给drawAtPoint:方法的点的左坐标。

于 2012-07-15T06:44:31.253 回答
2

如果您使用的是NSString类,您的生活会更轻松,因为您可以使用以下方法来使用类的UIStringDrawing扩展NSString(您不需要做任何额外的事情来使用这些方法NSString):

- (CGSize)sizeWithFont:(UIFont *)font;
- (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode;
- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size;
- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode;

UIFont它们为您提供所选和的当前字符串的确切大小UILineBreakMode,并且使用该大小您可以计算屏幕上的位置以始终将字符串的右边缘对齐在同一位置。

于 2012-07-15T11:11:12.067 回答