Ios 计算最大标签高度时遇到的问题

Ios 计算最大标签高度时遇到的问题,ios,objective-c,Ios,Objective C,我在计算一组标签的最大标签高度时遇到问题。我有以下代码: -(double)calcMaxHeight:(NSDictionary *)fields withFont:(UIFont *)font { double maxRowHeigth = 0; NSArray *keys = [fields allKeys]; for(NSString *key in keys) { NSDictionary *dic = [fields objectForKey:

我在计算一组标签的最大标签高度时遇到问题。我有以下代码:

-(double)calcMaxHeight:(NSDictionary *)fields withFont:(UIFont *)font {
    double maxRowHeigth = 0;
    NSArray *keys = [fields allKeys];
    for(NSString *key in keys) {
        NSDictionary *dic = [fields objectForKey:key];
        UILabel *aux = [[UILabel alloc] init];
        [aux setNumberOfLines:0];
        [aux setText:[dic objectForKey:@"text"]];
        [aux setFont:font];
        [aux setLineBreakMode:NSLineBreakByWordWrapping];
        CGSize maxSize = CGSizeMake([[dic objectForKey:@"value"] doubleValue],MAXFLOAT);
        CGSize auxSize = [aux sizeThatFits:maxSize];

        if(auxSize.height > maxRowHeigth)
            maxRowHeigth = auxSize.height;
    }
    return maxRowHeigth;
}
这个代码“有效”。问题是,当文本有填充时,我需要计算标签大小,因为在
drawTextInRect
方法中,我添加了一个
UIEdgeInsets
{3,3,3}

那么,如何计算带有填充的UILabel大小计数?我尝试重写sizeThatFits方法,但我仍然缺少一些东西:

-(CGSize)sizeThatFits:(CGSize)size {
    NSString *text=self.text;
    double width = size.width - 6;
    CGSize nSize = CGSizeMake(width, size.height);

    CGSize stringSize = [text boundingRectWithSize:nSize
                                           options:NSStringDrawingTruncatesLastVisibleLine |
                                                   NSStringDrawingUsesLineFragmentOrigin
                                        attributes:@{NSFontAttributeName : self.font}
                                           context:nil].size;
    return stringSize;
}
这样,当它占据超过一行时,我看不到整个文本

多谢各位


注意。

这将为您提供字符串的高度以及标签:

- (CGSize)sizeForString:(NSString *)text font:(UIFont *)font maxHeight:(CGFloat)maxHeight maxWidth:(CGFloat)maxWidth {

    NSDictionary *stringAttributes = @{NSFontAttributeName : font};

    CGSize stringLength = [text boundingRectWithSize:CGSizeMake(maxWidth, maxHeight 
                                             options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin 
                                          attributes:stringAttributes 
                                             context:nil].size;
    return stringLength;
}

你想计算字符串的高度?不,我想用给定字体计算标签的高度是的,但你可以通过计算字符串上字体的大小来计算。请看我的回答:您能添加预期的UInah吗?我仍然有相同的问题,您输入了正确的字符串并设置了所需的正确宽度和高度?如果您不想要高度或宽度的最大值,请使用MAXFLOAT。是。我使用了这个调用:
cgsizetest=[self-sizeForString:[dic-objectForKey:@“text”]font:font-maxHeight:MAXFLOAT-maxWidth:[[dic-objectForKey:@“value”]floatValue]][[dic objectForKey:@“value”]floatValue]为您提供了什么值?[dic objectForKey:@“text”]中有什么?text是故障组。宽度为60.0。我使用Arial粗体10号字体。计算的高度为11.171875