如何测量 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 的项目时,我实际上并没有收到弃用警告。