Objective c sizeWithFont返回宽度0

Objective c sizeWithFont返回宽度0,objective-c,nsstring,core-graphics,sizewithfont,Objective C,Nsstring,Core Graphics,Sizewithfont,我的最终目标是改变字体大小,使不同的单词适合同一个矩形区域。我认为sizeWithFont将是一个很好的使用方法,但我一直得到0的宽度,我感到困惑 NSString *name = @"Test Word"; CGFloat fontSize = 32.0; UIFont *font = [UIFont fontWithName:@"TimeNewRomanPSMT" size: fontSize]; CGSize sWidth = [name sizeWithFont:font

我的最终目标是改变字体大小,使不同的单词适合同一个矩形区域。我认为sizeWithFont将是一个很好的使用方法,但我一直得到0的宽度,我感到困惑

NSString *name = @"Test Word";
CGFloat fontSize = 32.0;
UIFont *font = [UIFont fontWithName:@"TimeNewRomanPSMT" size: fontSize]; 
CGSize sWidth = [name sizeWithFont:font 
             constrainedToSize:CGSizeMake(fontSize, CGFLOAT_MAX)
          lineBreakMode:UILineBreakModeWordWrap];
NSLog(@"sWidth =  %3.1f; rec.width n= %3.1f ", sWidth.width, rec.width);
我的计划是循环字体大小,直到宽度合适,但swith.width始终返回0


Chris

字体名称为TimesNewRomanPSMT,而不是TimeNewRomanPSMT

请注意秒后的时间,一个常见的错误

此网站非常有助于验证字体名称以及列出并提供iOS中所有可用字体的示例:


在这种情况下,您应该建议并检查的第一件事是您的字体不是
nil
。如果你输入了不正确的字体名称,可能会发生这种情况。伙计,你太棒了。改成AmericanTypewriter,效果很好。不过,为什么编译器没有捕捉到这一点呢?字体名称是一个字符串,在运行时进行检查,它是一个字符串,根据您正在运行的特定操作系统上的字体进行检查。我同意这是容易出错的,我个人更喜欢把它放在一个常量中。来自匿名用户:编译器没有捕捉到这一点,因为它不是编译错误。它不知道可用的字体。。而且没有检查。一旦有了这个名字的字体,它就可以工作了。