Ios 如何在as UIView上绘制NSStrings数组,它们之间没有任何前导空格,并占用整个rect?

Ios 如何在as UIView上绘制NSStrings数组,它们之间没有任何前导空格,并占用整个rect?,ios,objective-c,nsstring,drawing,Ios,Objective C,Nsstring,Drawing,我想在UIView上绘制一个不同字体大小的字符串数组。我已经计算了绘制每个字符串所需的高度。示例中的字符串数组是{“输入一些文本”、“that”、“will fit”、“rect”}。我计算高度如下: @implementation NSString (Additions) - (CGFloat)heightForFont:(UIFont *)font { NSAttributedString *attrString = [[NSAttributedString al

我想在UIView上绘制一个不同字体大小的字符串数组。我已经计算了绘制每个字符串所需的高度。示例中的字符串数组是{“输入一些文本”、“that”、“will fit”、“rect”}。我计算高度如下:

    @implementation NSString (Additions)

    - (CGFloat)heightForFont:(UIFont *)font {

    NSAttributedString *attrString = [[NSAttributedString alloc]initWithString:self attributes:@{NSFontAttributeName:font}];
    CTLineRef line = CTLineCreateWithAttributedString((__bridge CFAttributedStringRef)attrString);

    CGFloat ascent, descent, leading;
    CGFloat width = CTLineGetTypographicBounds(line, &ascent, &descent, &leading);
    CGFloat height = ascent + descent + leading;
    return height;
    }
然后,我尝试在UIView中绘制字符串,如下所示:

    - (void)drawStringArray:(NSArray *)splittedStringArray  maxYoFString:(CGFloat)maxY rect:(CGRect)rect fontsDict:(NSMutableDictionary *)fontsDict  {
//Alter X origin if scaled
CGFloat originX = rect.origin.x;
CGRect drawRect = rect;
drawRect.origin.x = originX;
drawRect.origin.y = 0.0;
CGFloat heightForString = 0.0;
for (int i = 0; i < splittedStringArray.count; i++) {
    NSString *string =  splittedStringArray[i];
    UIFont *font = [fontsDict objectForKey:string];
    if(i < splittedStringArray.count -1)
    heightForString =  [string heightForFont:font];
    [string drawInRect:rect withAttributes:@{
                                         NSFontAttributeName : font,
                                         NSForegroundColorAttributeName :self.random.currentTextColor
                                         }];
    drawRect.origin.y += heightForString;
    }
    }
-(void)drawStringArray:(NSArray*)拆分StringArray maxYoFString:(CGFloat)maxY rect:(CGRect)rect fontsDict:(NSMutableDictionary*)fontsDict{
//如果缩放,则改变X原点
CGFloat originX=rect.origin.x;
CGRect drawRect=rect;
drawRect.origin.x=originX;
drawRect.origin.y=0.0;
CGFloat heightForString=0.0;
对于(int i=0;i

但在两行之间总有一个空格。我想在没有任何前导空格的情况下绘制字符串。

一个简单的解决方案是修补字体文件本身并确定其行高。看看怎么做,这里