2012-02-29 111 views
3

我得到了一些应用程序的一些文本数据。创建灵活的UILabel

从TableView用户选择一个单元格,然后使用相关文本数据查看UIViewController。但是信息文本可能从1行到N.如何创建这样的UILabel,它将根据文本的大小改变大小?

回答

2

您可以设置标签的numberOfLines属性以指定它可以换行的行数。如果将其设置为零,则可以换行至任意数量的行。你可以在你的笔尖中设置这个属性。

但是,您还需要设置足够大的帧以显示所有行。最简单的方法是在设置其文本后发送sizeToFit消息。它会保持其宽度(我认为),但将其高度改为足够高以便在包装后显示其所有线条。

如果您的文字太多而不适合放在屏幕上(或不适合您的标签可用空间),则应该使用UITextView。 A UITextView允许自动滚动。

+0

我可以为该标签设置固定宽度吗?然后采取高度? – 2012-02-29 07:30:36

+0

检查出[这个问题和答案](http://stackoverflow.com/questions/406212/sizing-a-uilabel-to-fit) – ayoy 2012-02-29 07:44:39

3

在的NSString UIKit的添置的字体,你可以找到下面的方法:

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode 

这一个,你可以定义标签的最佳高度或宽度。例如,为了获得一个UILabel的最佳高度,您可以创建的UILabel类别下面的方法:

- (float)optimalHeight 
{ 
    return [self.text sizeWithFont:self.font constrainedToSize:CGSizeMake(self.frame.size.width, UINTMAX_MAX) lineBreakMode:self.lineBreakMode].height; 
} 

,你可以简单地改变你的UILabel的框架。不要忘记将标签的行数设置为0.