5

Things アプリケーションで行われているのと同じように、特別なアイテムを動作させたいと考えています。サイドバーの下部にあるLogbookTrashの項目を意味します。

ログブックとゴミ箱のアイテムは一番下にあります http://tinyurl.com/lhctza

サイドバー ツリーに同じ機能を実装する方法を教えてください。

outlineView:heightOfRowByItem:メソッドと一緒に特別な「スペーサー」ツリーアイテムを使用する必要があると思います。

ただし、表示されているすべてのアイテムの合計の高さを計算する方法が見つかりません (グループ間のスペースを含む)。

4

2 に答える 2

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 に答える