有没有办法向AutoLayout约束视图询问它的高度?

时间:2015-01-23 02:14:56

标签: ios uiview autolayout uilabel

如果使用约束以编程方式布局UIView子类,并且它包含一些多行标签,那么在给定任意宽度的情况下如何计算该视图所需的高度?

我知道方法systemLayoutSizeFittingSize:,但这些方法似乎需要UILayoutFittingCompressedSize而不是特定的宽度。如果没有我提供另一个,它怎么能返回准确的高度或宽度呢?

1 个答案:

答案 0 :(得分:1)

据我所知,您需要单独计算每个标签的大小。这应该可以计算单个多行标签的大小。

CGSize boundingRectSize = CGSizeMake(widthToConstrainTo, CGFLOAT_MAX);
NSDictionary *attributes = @{NSFontAttributeName : [UIFont fontWithName:fontName size:fontSize]};
CGRect labelSize = [labelString boundingRectWithSize:boundingRectSize 
                                             options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
                                          attributes:attributes
                                             context:nil];