我得到了一些应用程序的一些文本数据。创建灵活的UILabel
从TableView用户选择一个单元格,然后使用相关文本数据查看UIViewController。但是信息文本可能从1行到N.如何创建这样的UILabel,它将根据文本的大小改变大小?
我得到了一些应用程序的一些文本数据。创建灵活的UILabel
从TableView用户选择一个单元格,然后使用相关文本数据查看UIViewController。但是信息文本可能从1行到N.如何创建这样的UILabel,它将根据文本的大小改变大小?
另一种解决方案是使用sizeWithFont方法在代码中执行此操作。 你可以在这里找到更多的信息:iOS: UILabel dynamic height using sizeWithFont:constrainedToSize:lineBreakMode: not working
如果它是变化的高度,你可以设置最大标签大小,用你的标准标签宽度和9999的高度,然后检查建议的大小会是怎样为您的文字,使用标签
您可以设置标签的numberOfLines
属性以指定它可以换行的行数。如果将其设置为零,则可以换行至任意数量的行。你可以在你的笔尖中设置这个属性。
但是,您还需要设置足够大的帧以显示所有行。最简单的方法是在设置其文本后发送sizeToFit
消息。它会保持其宽度(我认为),但将其高度改为足够高以便在包装后显示其所有线条。
如果您的文字太多而不适合放在屏幕上(或不适合您的标签可用空间),则应该使用UITextView
。 A UITextView
允许自动滚动。
在的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.
我可以为该标签设置固定宽度吗?然后采取高度? – 2012-02-29 07:30:36
检查出[这个问题和答案](http://stackoverflow.com/questions/406212/sizing-a-uilabel-to-fit) – ayoy 2012-02-29 07:44:39