如何在OS X 10.11中测量多行文本高度?

时间:2015-12-22 17:23:26

标签: macos nsstring osx-yosemite nstableview osx-elcapitan

问题:我想在基于视图的NSTableView单元格中设置长文本,其中要适当调整行高。为此,我需要计算文本边界矩形的高度。 我找到了解决方案:https://discussions.apple.com/thread/4216370?tstart=0但它使用了10.11中不推荐使用的函数。 所以基本问题是:如何测量多行/断行文本的边界矩形,同时确保其与OS X 10.11的一致性?

1 个答案:

答案 0 :(得分:2)

根据标头文件,您应该使用-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的旧初始化程序的项目时,我实际上并没有得到弃用警告。