2013-07-21 31 views
7

我正在开发一个应用程序的iOS> 5.0和使用Xcode 4.6.2 为了解释我的问题,我有一个UIScrollView其中只包含一堆UILabel。我要在这些UILabel中显示的文本是动态的,但是,UILabel的帧是恒定的,所以如果当前文本不符合帧宽度,我需要缩小字体大小。所以,我发现adjustsFontSizeToFitWidth财产UILabeladjustsFontSizeToFitWidth无法正常工作

这里是我从UILabel直接参考的解释。

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

Yeap,我认为这就是我正在寻找的,因为我要在UILabel中显示的文本总是一行。 所以我知道这个属性应该使用numberOfLines属性来设置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]; 
} 

imageNumberINT我使用放置此UILabel S IN适当的地方,我UIScrollView这名resultTypeScrollViewresultTypeImageWidth是我定义的一个常数,并且设置为100以给出UILabel之间的一些空间。

所以,我的问题是,如果文本不符合标签的框架,它会被截断。我预计如果文本不符合框架,字体大小将缩小以适应它。至少,这是我从UILabelclass reference了解到的。显然,我错过了一些东西,但是什么?

到目前为止,

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

这应该只是工作而不会改变很多默认值。我注意到的一件事是你的代码没有设置adjustsFontSizeToFitWidth,它只获取它。设置看起来像这样lbl.adjustsFontSizeToFitWidth = YES; – danh

+0

@丹,这是问题,我不知道我是如何错过它,添加您的评论作为答案,我会接受它,谢谢:) – limon

+0

很高兴它帮助。谢谢。 – danh

回答

8

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

lbl.adjustsFontSizeToFitWidth = YES; 
+0

真棒!非常感谢。 – nithinreddy