CGSize sizeWithFont没有返回正确的高度

时间:2012-04-19 08:30:44

标签: iphone objective-c uilabel

如果我强制它的框架高度足够高,我有一个正确自行换行的UILabel。但是,我希望它能动态地找到合适的高度,sizeWithFont方法不会这样做;该方法只在我的标签中创建一行:

CGSize subtitleSize=[subtitle sizeWithFont:subtitleFont forWidth:maxwidth lineBreakMode:UILineBreakModeWordWrap];

然后我使用与此函数相同的文本,字体和大小:

        UILabel *subLabel=[[[UILabel alloc] initWithFrame:CGRectMake(0, 0, maxwidth, subtitleSize.height)]autorelease];
        subLabel.font=subtitleFont;
        subLabel.text=subtitle;
        subLabel.numberOfLines=0;
        subLabel.lineBreakMode=UILineBreakModeWordWrap;

看起来它应该全部工作并给我一个我随后使用的尺寸。但是尺寸的高度始终只是标签的一行。

3 个答案:

答案 0 :(得分:7)

你可以使用这个

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode; 

最大大小为constrainedToSize

CGSize size = CGSizeMake(maxwidth, CGFLOAT_MAX);

答案 1 :(得分:1)

首先,检查字幕变量中的文字是否符合预期。然后尝试使用此方法计算文本大小:

CGSize subtitleSize = [subtitle sizeWithFont:subtitleFont constrainedToSize:CGSizeMake(maxwidth, 1000000) lineBreakMode:UILineBreakModeWordWrap];

在此代码中,您将计算文本大小为最大宽度和“无限”高度。

希望它有所帮助。

答案 2 :(得分:1)

你可以手动给出一个更大的字体大小,这对我有用。