CGSize sizeWithFont没有返回正确的高度

joh*_*ers 3 iphone objective-c uilabel

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

CGSize subtitleSize=[subtitle sizeWithFont:subtitleFont forWidth:maxwidth lineBreakMode:UILineBreakModeWordWrap];
Run Code Online (Sandbox Code Playgroud)

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

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

它看起来应该都可以工作,然后给我一个我随后使用的尺寸.但是尺寸的高度始终只是标签的一行.

ada*_*ali 7

你可以用这个

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode; 
Run Code Online (Sandbox Code Playgroud)

最大大小在constrainedToSize中

CGSize size = CGSizeMake(maxwidth, CGFLOAT_MAX);
Run Code Online (Sandbox Code Playgroud)