【问题标题】:How to get drawn element height before it's displayed? Objective-C如何在显示之前获取绘制的元素高度? Objective-C
【发布时间】:2013-04-07 22:19:45
【问题描述】:

我正在尝试调整 UITableViewCell 的高度。

我的单元格包含另一个视图,该视图将绘制文本并显示在单元格中。

但是,文本高度可能会有所不同,我只能在调用 drawRect 后才能弄清楚(在嵌入的子视图中)。

有什么方法可以在视图显示之前计算出它的高度吗?

【问题讨论】:

    标签: ios objective-c xcode


    【解决方案1】:

    只要你知道字体、绘制文本的视图宽度,以及必要时的换行模式,那么你可以使用:
    sizeWithFont:
    sizeWithFont:constrainedToSize:
    sizeWithFont:constrainedToSize:lineBreakMode:

    【讨论】:

    • 其实不是字符串,文字是用CGraphics绘制的。
    • 不管怎样,你正在绘制的仍然是文本,表示文本将是一个字符串。另外,this post 表示绘制字符串的不同方法,答案也很丰富
    • 谢谢,我使用了一个以某种复杂方式绘制文本的库来支持 ios 上的自定义字体(IOS 似乎忽略了某些语言的自定义字体)。所以这个解决方案在我的情况下不起作用。我通过两次绘制相同的文本解决了这个问题,一次是获取高度,另一次是在屏幕上显示。我接受了你的回答,我希望我能够投票(因为我是新来的,所以声誉很低)。
    【解决方案2】:

    好吧,我终于找到了方法,我想这不是最好的方法,但它确实有效。

    我实现了一个重新绘制所有内容并立即返回绘制文本的高度的方法。现在实际上我必须绘制文本两次,一次获取其高度,另一次将其显示在屏幕上!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      相关资源
      最近更新 更多