iOS NSString drawInRect始终在矩形框顶部下方绘制文本

iOS NSString drawInRect始终在矩形框顶部下方绘制文本,ios,objective-c,nsstring,alignment,drawinrect,Ios,Objective C,Nsstring,Alignment,Drawinrect,我有一个在矩形框架(宽度=170,高度=30)中绘制文本的方法(文本为“0%”,字体大小=30): 我无法发布图像结果,但结果是文本在框架顶部下方绘制了一些像素,但底部很好(文本底部与底部框架匹配),并且无论我如何调整框架和文本的大小,它总是在框架顶部下方的“某处”绘制,有什么想法吗?这就是它的工作原理。它总是在矩形顶部下方绘制几个像素 如果您希望对定位有更多的控制,可以使用CTTypesetter和其他核心文本API来计算文本大小。下面是一个“简单”的例子: 如果要使用核心文本,请务必阅读苹

我有一个在矩形框架(宽度=170,高度=30)中绘制文本的方法(文本为“0%”,字体大小=30):


我无法发布图像结果,但结果是文本在框架顶部下方绘制了一些像素,但底部很好(文本底部与底部框架匹配),并且无论我如何调整框架和文本的大小,它总是在框架顶部下方的“某处”绘制,有什么想法吗?

这就是它的工作原理。它总是在矩形顶部下方绘制几个像素

如果您希望对定位有更多的控制,可以使用
CTTypesetter
和其他核心文本API来计算文本大小。下面是一个“简单”的例子:

如果要使用核心文本,请务必阅读苹果的文档:

/* 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];
}