如何调整 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 的大小以适合文本?的主要内容,如果未能解决你的问题,请参考以下文章

UIView 根据边缘调整大小

如何以编程方式设置 UIView 的自动调整大小掩码?

如何调整 UIView 的大小并强制其子视图调整大小

如何调整 UIScrollView 的大小,使其不是父 UIView 的 100%?

使用UIToolbar调整UIView的大小不会同时调整大小

iPhone UIView - 调整框架以适应子视图