ios – drawInRect:withAttributes文本中心垂直或放一些填充

前端之家收集整理的这篇文章主要介绍了ios – drawInRect:withAttributes文本中心垂直或放一些填充前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用drawInRect:withAttributes在iOS 7中为pdf添加文本.我需要将文本垂直居中在CGRect中,或至少我需要在CGRect边框和文本之间保留一些间隙/填充.否则文字看起来更接近盒子.有什么属性可以做到吗?如果不是最好的方法呢?以下是我的代码
我试过NSBaselineOffsetAttributeName,但它只增加了每一行之间的差距,而不是与rect的边界的差距.

谢谢

CGContextRef    currentContext = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(currentContext,bgColor.CGColor);
CGRect renderingRect = CGRectMake(startPoint.x,startPoint.y,width,height);
CGContextFillRect(currentContext,renderingRect);

NSDictionary *attributes = @{ NSFontAttributeName: font,NSForegroundColorAttributeName: fgColor,};

[textToDraw drawInRect:renderingRect  withAttributes:attributes];

解决方法

首先,您需要计算文本的高度,使用此信息和边框矩形的高度,您可以轻松计算新的矩形以使文本居中.

我将分享一段我用来垂直居中的代码.在我的情况下,我使用一个不同的drawInRect函数(drawInRect:withFont …),我使用sizeWithFont来计算文本的大小. YOu会调整这个代码来使用你已经使用的函数(带有属性),或者使用我在这里发布的函数.

UIFont *font = [UIFont systemFontOfSize:14];
CGSize size = [text sizeWithFont:font];
if (size.width < rect.size.width)
{
    CGRect r = CGRectMake(rect.origin.x,rect.origin.y + (rect.size.height - size.height)/2,rect.size.width,(rect.size.height - size.height)/2);
    [text drawInRect:r withFont:font lineBreakMode:UILineBreakModeClip alignment:UITextAlignmentLeft];
}

猜你在找的iOS相关文章