NSOutlineView奇怪的填充正在裁剪徽章

时间:2014-03-05 20:42:06

标签: cocoa nsoutlineview

我创建了一个基于视图的NSOutlineView,其中包含图像和徽章(内联按钮)。虽然自定义单元格足够宽,但我有以下问题:

enter image description here

所以右侧有一个奇怪的边缘覆盖我的徽章(NSOutlineView嵌入ScrollView,这在SplitView中)。

任何想法,我如何删除此边距/叠加?

1 个答案:

答案 0 :(得分:0)

好的,我的上一条评论给了我答案;) 据我所知,滚动条确实存在问题,无论它是否隐藏。我认为它是旧版OS X版本的遗留物,其中滚动条被永久显示。当您调整outlineview的大小(嵌入在scrollview中并嵌入splitview)时,单元格的宽度将自动变得略小于outlineview本身的宽度(可能是因为NSScrollView代码认为,它必须调整因为滚动条。)

因此我将NSTableCellView子类化(我使用基于视图的outlineview)并添加了这个:

- (void)setFrameSize:(NSSize)newSize {
    //resize the textframe, so that it will not be cropped too early with "..."
    NSRect textFrame = self.textField.frame;
    textFrame.size.width = newSize.width;
    self.textField.frame = textFrame;

    //increase the size of the whole cell
    newSize.width = newSize.width + 10.0;

    [super setFrameSize:newSize];
}

您还必须增加文本框架的宽度,因为 - 正如您在Finder或Mail等中看到的那样 - 单元格的文本非常早期裁剪(使用" ...") 。通过增加它的宽度,这个问题也得到了解决。

我希望,这种描述几乎可以理解;)