2012-07-15 21 views
2

我正在使用DrawRect方法來繪製一些文本,並且無法弄清楚如何將此文本對齊到右側。NSString在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)]; 

回答

3

您需要做數學計算右對齊的正確點。使用[newEmail size]計算屬性字符串的寬度,將其從您希望繪製的矩形的寬度中減去,並將該差值添加到傳遞給drawAtPoint:方法的點的左側座標中。

+0

感謝您的快速響應!我確實有一個問題:如何將'[newEmail size]'存儲爲一個整數來進行數學運算?再次感謝! – jtorraca 2012-07-15 16:03:13

+0

@jtorraca'size'返回'NSSize'結構,它包含兩個座標中的尺寸。你可以使用'CGFloat w = [newEmail size] .width;'來獲得文本的寬度。你可以使用'int'而不是'CGFloat',但是'CGFloat'在寬度有一小部分的情況下可以提供更好的精度。 – dasblinkenlight 2012-07-15 17:08:01

+0

好的,非常感謝!它工作完美! – jtorraca 2012-07-15 23:29:22

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; 

他們給你的當前字符串選定UIFontUILineBreakMode,並使用該尺寸的確切大小,你可以指望在屏幕上的位置在同一位置始終一致的字符串的右邊緣。