字符串的boundingRect给UITextView错误的结果

时间:2019-06-15 17:45:34

标签: ios swift nsstring uilabel uitextview

该问题说明了自己,将NSString的bo​​undingRect与UITextView一起使用会产生错误的结果。同样适用于UILabel。

请从here下载该示例游乐场

这些是我的观察:

  1. UITextView已添加默认填充,这可能会导致尺寸计算和UI出现问题,如图here所示,因此我按照上述方法从textview中删除了默认填充。

  2. 此后,我使用boundingRect和诸如Helvetica之类的自定义字体设置UITextView的高度,它给出了错误的值。文本的某些部分不显示。

  3. 现在,如果我简单地将字体更改为系统字体,那么它将奇迹般地为UITextView提供正确的值。

在这两种情况下,boundingRect都会为UILabel提供正确的值,因此,如果我仅用UILabel更改UITextView,则大小将是完美的,并且文本会看起来很棒。

所以我的问题是,为什么在使用自定义字体时,boundingRect会给UITextView赋予错误的大小,但对于UILabel还是一样,并且在使用系统字体时,也会为UITextView提供正确的值。

PS:后来我发现textView的sizeThatFits方法似乎为textView的尺寸提供了正确的结果。虽然,问题仍然存在,为什么使用UITextView和自定义字体破坏了boundingRect?

根据马特(Matt)的建议:尽管如此,他还是删除了答案:(

我尝试使用带有字体的属性字符串,而不是直接设置Textview的font属性,在我看来这有点奇怪,因为如果苹果不起作用,Apple不会公开font属性。 尽管如此,我还是尝试使用attributedString,并基于它计算高度仍然不起作用。 Check here

0 个答案:

没有答案