我正在开发一个应用程序的iOS> 5.0和使用Xcode 4.6.2 为了解释我的问题,我有一个UIScrollView
其中只包含一堆UILabel
。我要在这些UILabel
中显示的文本是动态的,但是,UILabel
的帧是恒定的,所以如果当前文本不符合帧宽度,我需要缩小字体大小。所以,我发现adjustsFontSizeToFitWidth
财产UILabel
。adjustsFontSizeToFitWidth无法正常工作
这里是我从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];
}
imageNumber
是INT我使用放置此UILabel
S IN适当的地方,我UIScrollView
这名resultTypeScrollView
。 resultTypeImageWidth
是我定义的一个常数,并且设置为100以给出UILabel
之间的一些空间。
所以,我的问题是,如果文本不符合标签的框架,它会被截断。我预计如果文本不符合框架,字体大小将缩小以适应它。至少,这是我从UILabel
class reference了解到的。显然,我错过了一些东西,但是什么?
到目前为止,
- 由于我使用自定义的字体,我怀疑,使用自定义的字体将是一个问题。所以,我改成了系统字体之一,它没有任何作用。
- 我试图设置
NSLineBreakMode
到NSLineBreakByClipping
以防止文本被截断。在此之后,文本不会被截断,但有些字符会丢失,之前会被截断。 - 我也用
minimumScaleFactor
来设置不同的值,看看它是否有任何效果,但根本没有效果。
这应该只是工作而不会改变很多默认值。我注意到的一件事是你的代码没有设置adjustsFontSizeToFitWidth,它只获取它。设置看起来像这样lbl.adjustsFontSizeToFitWidth = YES; – danh
@丹,这是问题,我不知道我是如何错过它,添加您的评论作为答案,我会接受它,谢谢:) – limon
很高兴它帮助。谢谢。 – danh