NSAttributedString boundingRect返回错误的高度

时间:2019-02-02 21:16:21

标签: swift macos cocoa nsattributedstring

余计算的高度的NSAttributedString这样的。

let maxSize = NSSize(width: w, height: CGFloat.greatestFiniteMagnitude)
let rect = boundingRect(with: maxSize, options: [.usesFontLeading, .usesLineFragmentOrigin])
let height = rect.integral.size.height

我试图有关已在SO提到每一个“黑客”,但字符串高度变得更不准确的宽度变得越小(计算高度比实际高度大)。

根据其它帖子以下的事情事业大小计算的问题:

  • 空白
  • 没有前景色
  • 没有背景色
  • 小于300的宽度无效(?)

我发现这些建议都没有任何不同。属性字符串是行的串联,每个行都有一个foregroundColorbackgroundColor。该字符串还具有以下段落样式。

 let pstyle = NSMutableParagraphStyle()
 pstyle.lineSpacing = 6
 pstyle.lineBreakMode = .byWordWrapping

和大小为11的userFixedPitchFont

为什么高度误差变大小的宽度为?

PS:我想它是与lineBreak,因为如果多个线是字包裹误差变大

1 个答案:

答案 0 :(得分:0)

我发现此解决方案有效。请注意,如果您没有将Public Function UpdateName() CurrentDb.Execute ("UPDATE TempTable SET TempTable.NameID = RemoveSpecial([TempTable]![ClientName]);") End Function 设置为lineFragmentPadding,则会产生与0相同(错误)的结果。

boundingRect