macos - 有什么方法可以(轻松)确定格式化 Framesetter 所需的最小宽度?

标签 macos cocoa core-text

如果我有一个用这样的字符串初始化的框架 setter

CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(attrString);

我想找到显示框架中最大字符串的最小宽度。是否有捷径可寻?我可以通过迭代行并运行并从那里计算它来做到这一点,但它似乎有一个方法,因为它会在内部计算它。

我试过了

CGSize sz = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0,0), NULL, CGSizeMake(1, CGFLOAT_MAX), NULL);

但它只是返回一个恒定大小,这似乎是单个字形的宽度。

蒂亚

最佳答案

如果您正在寻找宽度,则应在 CGSizeMake 中传递 CGFLOAT_MAX 作为宽度,以指示宽度不受约束。

一般来说,要查找给定宽度的高度,请传递 CGSizeMake(myWidth, CGFLOAT_MAX),要查找单行文本的宽度,请传递 CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX)。

关于macos - 有什么方法可以(轻松)确定格式化 Framesetter 所需的最小宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9227409/

相关文章:

android - 用于将 Android 支持库添加到 SDK 管理器的 URL

macos - 使用 bash 导航到 Finder 中的文件

objective-c - Objective C 和 Cocoa 将小数英尺转换为英尺和英寸?

ios - CTFontGetAscent() 与 OSX 上匹配字体的 ascent 有很大不同

ios - 为什么调用 NSMutableAttributedString addAttributes 会崩溃?

macos - Git 没有使用我的 $PATH 中的第一个编辑器

java - Mac OS X 上 sqlite4java Jar 的不满意链接错误

objective-c - 如何在 Xcode 调试器中查看 NSDictionary 变量的内容?

swift - 如何在 OS X 中通过字符串查询搜索文件/文件夹?

ios - 在 TextView 中显示自定义文本