我知道有这个:
sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:
但由于CGSize总是具有相同的高度,并且不能适应任何缩小的文本或任何缩小的文本,因此CGSize并没有说明文本的高度。
示例:制作一个320 x 55点的UILabel并在其中放入一个loooooooooooooong文本。让标签缩小文本。惊喜:CGSize.height保持相同的高度,即使文字很小,你需要一台显微镜。
好的,所以在我的脑袋撞到我的macbook pro后现在已经被破坏了一半,唯一可以帮助的想法是讨厌的realFontSize。但字体大小是异食癖,我想,它不是你在屏幕上得到的,不是吗?
当字体大小为10时,我的文字最多是10分吗?偶尔我尝试了一下,一旦文本有一个或一些延伸到下面的字符(就像y的尾部那样),它就会超出界限,整个文本大于10点。 / p>
那么如何在不留长胡须和一些医院经验的情况下计算单线uilabel的实际文字高度?
答案 0 :(得分:3)
试试这段代码:
CGSize maximumSize = CGSizeMake(300, 9999);
NSString *myString = @"This is a long string which wraps";
UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:14];
CGSize myStringSize = [myString sizeWithFont:myFont
constrainedToSize:maximumSize
lineBreakMode:self.myLabel.lineBreakMode];
来自我的回答here
它使用不同的方法,并在开始时设置一个非常高的CGSize
(然后缩小以适应字符串)
答案 1 :(得分:3)
重要提示:自iOS 7.0起,不推荐使用以下方法。
sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:
使用以下代码
CGRect frame = [cellText boundingRectWithSize:CGSizeMake(568,320) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:32.0f]} context:nil];
float height = frame.size.height;
答案 2 :(得分:2)
听起来像从该函数调用中获得实际字体大小后,您需要再次使用该新大小调用:
NSString* yourString = @"SomeString";
float actualSize;
[yourString sizeWithFont:yourFont
minFontSize:minSize
actualFontSize:&actualSize
forWidth:rectWidth
lineBreakMode:breakMode];
CGSize size = [yourString sizeWithFont:[UIFont fontWithName:fontName size:actualSize]];
答案 3 :(得分:1)
您还设置了label.numberOfLines = 0;
?
答案 4 :(得分:0)
运行此代码后,frame.size将完全具有nsstring的高度和宽度。
NSString *text = @"This is my Mac";
textFont = [NSFont fontWithName:@"HelveticaNeue-Medium" size: 80.f];
textColor = [NSColor yellowColor];
NSDictionary *attribs = @{ NSForegroundColorAttributeName:textColor,
NSFontAttributeName: textFont };
CGRect frame = [text boundingRectWithSize:CGSizeMake(0,0) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesDeviceMetrics attributes:attribs context:nil];