デリゲート関数を使用して NSOutlineView をカスタマイズし、次を使用してグループ項目の行の高さと色を調整しました。
- (void)outlineView:(NSOutlineView *)outlineView didAddRowView:(NSTableRowView *)rowView forRow:(NSInteger)row {
LOG(@"didAddRowView called");
if ([self outlineView:outlineView isGroupItem:[outlineView itemAtRow:row]])
[rowView setBackgroundColor:[NSColor controlColor]];
}
- (CGFloat)outlineView:(NSOutlineView *)outlineView heightOfRowByItem:(id)item {
if ([self outlineView:outlineView isGroupItem:item])
return 24.0;
else
return 36.0;
}
これはほとんど機能します。結果は以下のとおりです。セクションの最後の行と次のセクション ヘッダーの間に小さなギャップがあります。これが何であるか、およびそれを削除する方法について、誰でも光を当てることができますか. おそらく何らかのフッターである可能性があります。そうであれば、それを調整するための API はありますか? outlineView:heightOfRowsByItem
下の写真は、完全に削除した場合の写真です。
heightOfRowsByItem を使用しない場合の結果
編集:outlineView backgroundColorをヘッダー行に必要な色に設定し、他の行の色を白に設定することで、これを解決しました。以下に示すように、これでギャップが埋められますが、それでも多少の回避策のようです。