【问题标题】:Is there a way to ask an AutoLayout constrained view for it's height?有没有办法询问 AutoLayout 约束视图的高度?
【发布时间】:2015-01-23 02:14:56
【问题描述】:

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

我知道systemLayoutSizeFittingSize: 方法,但这些似乎期望像UILayoutFittingCompressedSize 这样的东西,而不是特定的宽度。如果我不提供另一个,它如何返回准确的高度或宽度?

【问题讨论】:

  • 布局完成后你可以很容易地得到结果高度,但是如果你使用约束,为什么你需要在布局之前计算高度呢?
  • 我打算将视图用作tableHeaderView。我希望避免在没有框架的情况下设置它并强制布局只是为了获得大小,然后才应用该大小并重新设置 tableHeaderView。
  • 啊!就自动布局而言,标题似乎是一个很大的疏忽,您可以尝试其他策略(例如使用自定义视图和 layoutSubviews),但在表标题方面不知道有什么更简单的方法。

标签: ios uiview autolayout uilabel


【解决方案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];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多