如何测量 OS X 10.11 中的多行文字高度?
How to measure multiline text height in OS X 10.11?
问题:我想在基于视图的 NSTableView 单元格中设置长文本,并适当调整行高。为此,我需要计算文本边界矩形的高度。
我找到了解决方案:https://discussions.apple.com/thread/4216370?tstart=0 但它使用了 10.11 中弃用的函数。
所以根本问题是:如何测量 multiline/line-broken 文本的边界矩形,同时确保其符合 OS X 10.11?
根据头文件,你应该使用-initWithSize:
而不是-initWithContainerSize:
。不确定为什么文档中没有提到这一点。当然,如果您需要能够在 10.11 之前的版本上 运行 您的代码,那么您必须有条件地调用 -initWithSize:
或 -initWithContainerSize:
,具体取决于当前版本。
NSTextContainer *container;
if ([NSTextContainer instancesRespondToSelector:@selector(initWithSize:)]) {
container = [[NSTextContainer alloc] initWithSize: NSMakeSize(width, FLT_MAX)];
} else {
container = [[NSTextContainer alloc] initWithContainerSize: NSMakeSize(width, FLT_MAX)];
}
奇怪的是,当我构建一个使用旧初始化程序和 10.11 SDK 的项目时,我实际上并没有收到弃用警告。
问题:我想在基于视图的 NSTableView 单元格中设置长文本,并适当调整行高。为此,我需要计算文本边界矩形的高度。 我找到了解决方案:https://discussions.apple.com/thread/4216370?tstart=0 但它使用了 10.11 中弃用的函数。 所以根本问题是:如何测量 multiline/line-broken 文本的边界矩形,同时确保其符合 OS X 10.11?
根据头文件,你应该使用-initWithSize:
而不是-initWithContainerSize:
。不确定为什么文档中没有提到这一点。当然,如果您需要能够在 10.11 之前的版本上 运行 您的代码,那么您必须有条件地调用 -initWithSize:
或 -initWithContainerSize:
,具体取决于当前版本。
NSTextContainer *container;
if ([NSTextContainer instancesRespondToSelector:@selector(initWithSize:)]) {
container = [[NSTextContainer alloc] initWithSize: NSMakeSize(width, FLT_MAX)];
} else {
container = [[NSTextContainer alloc] initWithContainerSize: NSMakeSize(width, FLT_MAX)];
}
奇怪的是,当我构建一个使用旧初始化程序和 10.11 SDK 的项目时,我实际上并没有收到弃用警告。