iOS NSString drawInRect始终在RectFrame顶部下方绘制文本

时间:2014-06-19 00:40:21

标签: ios objective-c nsstring alignment drawinrect

我有一个方法在RectFrame(width = 170,height = 30)中绘制文本(文本为“0%”,字体大小= 30):

/* Draw String IOS 7 up */
-(void) drawString: (CGRect) contextRect withStr: (NSString *) string {
    NSMutableParagraphStyle *textStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
    textStyle.lineBreakMode = NSLineBreakByWordWrapping;
    textStyle.alignment = NSTextAlignmentCenter;

    UIFont *font = [UIFont systemFontOfSize:_textSize];
    UIColor* textColor = [UIColor grayColor];

    NSDictionary* stringAttrs = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:textStyle, NSForegroundColorAttributeName:textColor};
    [string drawInRect:contextRect withAttributes:stringAttrs];
}

我无法发布图像结果,但结果是文本被绘制在框架顶部下方的一些像素,但底部很好(文本底部与底部框架匹配),无论我如何调整两者框架和文字的大小,它总是画在框架顶部的“某处”,任何想法?

1 个答案:

答案 0 :(得分:0)

这就是它的工作方式。它总是在矩形顶部下方画几个像素。

如果您想要更多地控制定位,可以使用CTTypesetter和其他Core Text API来计算文字大小。这是一个“简单”的例子:

http://www.snip2code.com/Snippet/15903/Simple-CoreText-with-CTLineDraw-and-CTRu/

如果您要使用核心文本,请务必阅读Apple的文档:https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/CoreText_Programming/Overview/Overview.html#//apple_ref/doc/uid/TP40005533-CH3-SW1

相关问题