我正在使用以下代码设置NSBrowser
矩阵单元格的工具提示:
- (void) browser:(NSBrowser *)sender willDisplayCell:(id)cell atRow:(int)row column:(int)column {
NSMatrix *matrix = [sender matrixInColumn:column];
NSLog(@"'%@'", [cell title]);
[matrix setToolTip:[cell title] forCell:[matrix cellAtRow:row column:column]];
}
在大多数情况下,这会产生很棒的工具提示。
然而,当悬停一些细胞时,工具尖端会扩展到怪诞的宽度,将令人愉快的体验转变为令人讨厌的体验。下面的截图显示了这种可怕的行为。
触发上图所示的令人发指的工具提示的单元格的输出是:
'gnome-1.1-tb-linux.jar'
什么可能导致这些看似随机的暴行 - 我错过了一些明显的东西吗?
答案 0 :(得分:2)
在这种情况下对我有用的解决方案是在我的- (NSRect)expansionFrameWithFrame:(NSRect)cellFrame inView:(NSView *)view
子类中实现NSBrowserCell
,如下所示:
- (NSRect)expansionFrameWithFrame:(NSRect)cellFrame inView:(NSView *)view {
NSSize size = [self.tooltipText sizeWithAttributes:@{
NSFontAttributeName: [NSFont systemFontOfSize:[NSFont systemFontSize]]
}];
// Expansion frame displays below and indented to the right in relation to the cellFrame
NSRect rect = NSMakeRect(cellFrame.origin.x + 10, cellFrame.origin.y + size.height, size.width, size.height);
return rect;
}