如何处理未知的 UILabel 高度及其对 Interface Builder 中标签下方的影响?

Posted

技术标签:

【中文标题】如何处理未知的 UILabel 高度及其对 Interface Builder 中标签下方的影响?【英文标题】:How to handle unknown UILabel height and its effect on labels underneath in Interface Builder? 【发布时间】:2010-12-14 20:26:32 【问题描述】:

我在一个 XIB 文件中有两个 UILabel,一个在另一个之上,其内容是从网络上的 JSON 源文件加载的。

鉴于我不确定标签将占用的行数以及高度,我应该如何最好地将它们相对于彼此定位。

我知道在一些 Java GUI 框架中,可以使用各种容器元素,而在 html 中,这种布局流程将是默认设置,但我找不到任何似乎可以解决问题的方法。

我可以在 Interface Builder 中执行此操作,还是必须以编程方式执行此操作?

感谢您的帮助..

编辑:

我现在有了答案,尽管它可能并不完美。我有两个标签,titleLabel 上面 descLabel。这就是我实现它的方式:

titleLabel.text = [data objectForKey:@"title"];
descLabel.text  = [data objectForKey:@"description"];

CGSize s;
s.width = descLabel.frame.size.width;
s.height = 10000;



titleLabel.frame = CGRectMake(titleLabel.frame.origin.x, 
                             titleLabel.frame.origin.y,
                             titleLabel.frame.size.width,
                             [[data objectForKey:@"title"] sizeWithFont:titleLabel.font constrainedToSize: s lineBreakMode:titleLabel.lineBreakMode].height
                             );


descLabel.frame = CGRectMake(descLabel.frame.origin.x, 
                             titleLabel.frame.origin.y + [[data objectForKey:@"title"] sizeWithFont:titleLabel.font constrainedToSize: s lineBreakMode:titleLabel.lineBreakMode].height + 10,
                             descLabel.frame.size.width,
                             [[data objectForKey:@"description"] sizeWithFont:descLabel.font constrainedToSize: s lineBreakMode:descLabel.lineBreakMode].height
                             );

呸呸呸

【问题讨论】:

【参考方案1】:

您必须以编程方式执行此操作。 NSString 方法 -sizeWithFont:constrainedToSize:lineBreakMode:(实际上在 a UIKit category 中)将对此特别有用。

【讨论】:

好的。希望我不必那样做。谢谢

以上是关于如何处理未知的 UILabel 高度及其对 Interface Builder 中标签下方的影响?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理未知实体引用?

Apache,如何处理未知的 php 文件,如标准 URL?

如何处理语义分割中未知类的平均交集(mIOU)?

如何处理这个错误(1049,“未知数据库'/users/ohyunjun/work/astral/mysql'”)

如何处理角度5递归未知确切数字路由器参数?

C getline() - 如何处理缓冲区/如何将未知数量的值读入数组