5

我希望特殊项目的行为与 Things 应用程序中的行为相同。我的意思是侧边栏底部的日志垃圾箱项目:

日志和垃圾项目在最底部 http://tinyurl.com/lhctza

请建议在侧边栏树中实现相同功能的任何方法。

我觉得特殊的“间隔”树项目应该与outlineView:heightOfRowByItem:方法一起使用。

但是,我找不到如何计算所有可见项目的总高度(包括组之间的空间)。

4

2 回答 2

3

您可以尝试简单地拥有两个轮廓视图:一个是固定高度,固定在其父视图的底部,另一个是可变高度,其底部紧邻第一个视图的顶部。固定高度的大纲视图将包含那些日志和垃圾项目,而可变高度的大纲视图将包含所有其他项。

棘手的部分是通过滚动视图使这个游戏很好,但我认为你可以做到。我想你会把它们都放在一个完全可调整大小的 NSView 中,并使其成为滚动视图的文档视图。

于 2009-08-25T12:01:59.477 回答
1

我决定通过为组样式中的每个根项添加 8 个像素的高度来对解决方案进行硬编码。因此,代码如下所示:

- (CGFloat)outlineView:(NSOutlineView *)ov heightOfRowByItem:(id)item;
{
    if (![item isSpacer]) return [ov rowHeight];

    static const CGFloat ADDITIONAL_SPACE = 8.0f;
    NSUInteger numberOfRootGroups = 2;
    CGFloat heightOfRows = [ov rowHeight] * ([ov rowForItem:item] + 1) 
        + ADDITIONAL_SPACE * numberOfRootGroups;
    CGFloat heightOfSidebar = [[ov superview] frame].size.height;
    return MAX(0.0f, heightOfSidebar - heightOfRows);
}

感谢大家的支持!

于 2009-11-01T13:36:47.363 回答