我正在尝试将 CTFramesetterSuggestFrameSizeWithConstraints() 与 tableview:heightOfRow: 一起使用,输入带有 NSTableView 单元格属性的属性字符串。问题是它返回的值是 13.0 的倍数(13.0 表示 1 行,26.0 表示两行等),而不是预期的 14.0 倍数(对应于 [tableView rowHeight]。
NSDictionary * attributes = [[[[[tableView tableColumnWithIdentifier: @"Message"] dataCell] attributedStringValue]
attributesAtIndex: 0 effectiveRange: NULL] retain];
NSAttributedString * attributedMessage = [[NSAttributedString alloc] initWithString: message attributes: attributes];
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attributedMessage);
CFRange range;
CGSize size = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0, [attributedMessage length]), NULL, CGSizeMake([column width], CGFLOAT_MAX), &range);
CFRelease(framesetter);
[attributedMessage release];
return size.height;
任何意见,将不胜感激。现在我正在通过硬编码每行增加一个点(13.0)来解决它,但我想以正确的方式做到这一点。