adjustsFontSizeToFitWidth无法正常工作

lim*_*mon 7 iphone uilabel ios5 ios6

我正在为iOS> 5.0开发应用程序并使用Xcode 4.6.2为了解释我的问题,我UIScrollView只包含了一堆UILabel.我要在这些UILabels中显示的文本是动态的,但是,UILabel帧是常量,所以如果当前文本不适合帧宽,我需要缩小我的字体大小.所以,我找到了adjustsFontSizeToFitWidth属性UILabel.

这是我直接从UILabel课堂参考中得到的解释.

一个布尔值,指示是否应缩小字体大小以使标题字符串适合标签的边界矩形.

是的,我认为这就是我正在寻找的东西,因为我要展示的文字UILabel总是一行.所以我知道这个属性应该与numberOfLinesproperty一起使用来设置1.

这是我的代码,以实现这一目标.

for (NSString *currentImage in self.imagesNames)
{
    UILabel *lbl = [[UILabel alloc]initWithFrame:CGRectMake(imageNumber*resultTypeImageWidth, 10, 75, 35)];
    [lbl setFont:[UIFont fontWithName:@"GothamRounded-Bold" size:25]];
    [lbl setNumberOfLines:1];
    [lbl setText:currentImage];
    [lbl setBackgroundColor:[UIColor clearColor]];
    [lbl setTextColor:[UIColor colorWithHue:0.07 saturation:1 brightness:0.49 alpha:1.0]];
    [lbl adjustsFontSizeToFitWidth];
    [lbl setTextAlignment:NSTextAlignmentCenter];
    imageNumber++;
    [self.resultTypeScrollView addSubview:lbl];
}
Run Code Online (Sandbox Code Playgroud)

imageNumber是一个int,我用它来把它UILabel放在我UIScrollView的名字的适当位置resultTypeScrollView.resultTypeImageWidth是一个常数我已经定义并设置100以在UILabels 之间给出一些空间.

所以,我的问题是如果文本不适合标签的框架,它会被截断.我希望如果文本不适合框架,字体大小将缩小以适应它.至少,这是我从UILabel 课堂参考中理解的.显然,我错过了什么,但是什么?

至今,

  1. 由于我使用自定义字体,我怀疑使用自定义字体将是一个问题.所以,我改为系统字体之一,它没有任何效果.
  2. 我试图设置NSLineBreakModeNSLineBreakByClipping防止文本被截断.之后,文本不会被截断,但有些字符丢失,之前被截断.
  3. 我也用它minimumScaleFactor来设置不同的值,看它是否有任何效果,但是,根本没有效果.

dan*_*anh 8

这应该只在不改变许多默认值的情况下工作.已发布的代码未设置adjustsFontSizeToFitWidth,只能获取它.设置看起来像这样:

lbl.adjustsFontSizeToFitWidth = YES;
Run Code Online (Sandbox Code Playgroud)