如果我强制它的框架高度足够高,我有一个正确自行换行的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;
看起来它应该全部工作并给我一个我随后使用的尺寸。但是尺寸的高度始终只是标签的一行。
答案 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)
你可以手动给出一个更大的字体大小,这对我有用。