【问题标题】:How to handle unknown UILabel height and its effect on labels underneath in Interface Builder?如何处理未知的 UILabel 高度及其对 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
                             );

呸呸呸

【问题讨论】:

    标签: xcode ios interface-builder


    【解决方案1】:

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

    【讨论】:

    • 好的。希望我不必那样做。谢谢
    猜你喜欢
    • 2012-05-28
    • 2023-03-15
    • 2012-12-31
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多