gpt4 book ai didi

cocoa - 如何以固定宽度获取 NSAttributedString 的高度

转载 作者:行者123 更新时间:2023-12-03 16:00:34 24 4
gpt4 key购买 nike

我想在固定宽度的框中绘制 NSAttributedStrings,但在计算绘制时它们将占据的正确高度时遇到困难。到目前为止,我已经尝试过:

  1. 调用 - (NSSize) size ,但结果是无用的(为此目的),因为它们会给出字符串所需的任何宽度。

  2. 调用 - (void)drawWithRect:(NSRect)rect options:(NSStringDrawingOptions)options具有我想要的宽度的矩形和 NSStringDrawingUsesLineFragmentOrigin在选项中,与我在绘图中使用的完全一样。结果……难以理解;当然不是我要找的。 (正如在许多地方所指出的那样,包括 this Cocoa-Dev 线程)。

  3. 创建一个临时 NSTextView 并执行以下操作:
    [[tmpView textStorage] setAttributedString:aString];<br/>
    [tmpView setHorizontallyResizable:NO];<br/>
    [tmpView sizeToFit];

    当我查询 tmpView 的框架时,宽度仍然是所需的,并且高度通常是正确的......直到我得到更长的字符串,此时它通常是所需大小的一半。 (似乎没有达到最大尺寸:一帧将是 273.0 高(大约太短了 300),另一帧将是 478.0(仅太短了 60 左右))。

如果其他人已经做到了这一点,我将不胜感激。

最佳答案

-[NSAttributedString boundingRectWithSize:options:]

您可以指定NSStringDrawingUsesDeviceMetrics来获取union of all glyph bounds .

-[NSAttributedString size]不同,返回的NSRect表示绘制字符串时会发生变化的区域的尺寸。

正如@Bryan 评论,boundingRectWithSize:options:在 OS X 10.11 及更高版本中已弃用(不推荐)。这是因为字符串样式现在是动态的,具体取决于上下文。

对于 OS X 10.11 及更高版本,请参阅 Apple 的 Calculating Text Height开发者文档。

关于cocoa - 如何以固定宽度获取 NSAttributedString 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com