我无法计算一组标签的最大标签高度。我有以下代码:
-(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,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;
}
有了这个,当它占据超过1行时,我看不到整个文本。
谢谢。
问候。
答案 0 :(得分:0)
这将为您提供字符串的高度,因此标签为:
- (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;
}