如何调整 UIView 的大小以获取大量 UILabel 并调整 UILabel 的大小以适合文本?
Posted
技术标签:
【中文标题】如何调整 UIView 的大小以获取大量 UILabel 并调整 UILabel 的大小以适合文本?【英文标题】:How can i resize UIView for an amount of UILabels and resize UILabels to fit text? 【发布时间】:2011-12-27 17:51:14 【问题描述】:我有一个 UIView,它应该包含 UILabel,如果 UILabel 为 nil,则这些 UILabel 不固定,我不显示它,如果不是,我必须调整 UILabel 的大小以适合文本(它们可以是 2 ligne ) 并将其放在另一个 UILabel 下,之后我必须调整 UIView 容器的大小以适应此 UILabel 的数量。这是我想以编程方式执行的屏幕截图:
【问题讨论】:
【参考方案1】:UILabels 可以通过自动缩小字体来适应大量文本(请参阅 Interface Builder 中的最小字体大小值)。我会使用 UITextViews 而不是标签。它们通过允许用户滚动来适应大量文本。要使它们隐藏,请使用更改 UITextViews 的隐藏选择器属性。因为 UITextViews 的大小永远不会改变,所以您可以轻松地计算每个 UITextView 减少多少 UIView 容器的高度。希望这会有所帮助!
【讨论】:
【参考方案2】:我认为您必须一一计算标签的高度(更具体地说,是从原始高度添加)。当然,您应该能够通过将所有标签放在一个数组中来系统地执行此操作。
您可以使用[NSString sizeWithFont:]方法(有几个类似名称)来计算高度。
http://developer.apple.com/library/ios/#documentation/UIKit/Reference/NSString_UIKit_Additions/Reference/Reference.html
【讨论】:
【参考方案3】:如果您想保持相同的字体大小,那么您可以在运行时根据文本的长度计算标签的框架大小。 See here
【讨论】:
【参考方案4】:你需要用到label的以下两个属性-
-
lineBreakMode
行数
当您同时使用这两个属性时,您将实现您想要的。
【讨论】:
我如何调整 UIView 的大小以适应这个 UILabels 的数量 根据这些标签调整大小是否意味着视图高度。 我怎么知道 UILabel 是否需要 2 ligne? 你可以根据每个字体的字符数和字符大小来决定。以上是关于如何调整 UIView 的大小以获取大量 UILabel 并调整 UILabel 的大小以适合文本?的主要内容,如果未能解决你的问题,请参考以下文章
如何调整 UIScrollView 的大小,使其不是父 UIView 的 100%?