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